home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / EVISION1.ARJ / USERDOC.TXT < prev   
Text File  |  1992-05-19  |  131KB  |  4,131 lines

  1.  
  2.  
  3.  
  4.        ┌─────────────────────────────────────────────────────────────────────┐
  5.        │                                                                     │
  6.        │  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  │
  7.        │  ▒▒█████████▒▒█████████▒▒█████████▒▒██▒▒▒▒▒▒██▒▒▒▒┌────────────┐▒▒  │
  8.        │  ▒▒██        ▒██     ██ ▒██        ▒██ ▒▒▒▒▒██ ▒▒▒│            │ ▒  │
  9.        │  ▒▒██ ▒▒▒▒▒▒▒▒██ ▒▒▒▒██ ▒██ ▒▒▒▒▒▒▒▒██ ▒▒▒▒▒██ ▒▒▒│  █    █▀█  │ ▒  │
  10.        │  ▒▒█████████▒▒█████████ ▒█████████▒▒██████████ ▒▒▒│  █  ▄ █▄█  │ ▒  │
  11.        │  ▒▒██        ▒██     ██ ▒▒      ██ ▒▒   ██     ▒▒▒│            │ ▒  │
  12.        │  ▒▒██ ▒▒▒▒▒▒▒▒██ ▒▒▒▒██ ▒▒▒▒▒▒▒▒██ ▒▒▒▒▒██ ▒▒▒▒▒▒▒├────────────┤ ▒  │
  13.        │  ▒▒█████████▒▒██ ▒▒▒▒██ ▒█████████ ▒▒▒▒▒██ ▒▒▒▒▒▒▒│ User Guide │ ▒  │
  14.        │  ▒▒▒         ▒▒  ▒▒▒▒▒  ▒▒         ▒▒▒▒▒▒  ▒▒▒▒▒▒▒└────────────┘ ▒  │
  15.        │  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒              ▒  │
  16.        │  ▒▒██▒▒▒▒▒██▒▒██▒▒█████████▒▒██▒▒█████████▒▒█████████▒▒▒▒▒▒▒▒▒▒▒▒▒  │
  17.        │  ▒▒██ ▒▒▒▒██ ▒██ ▒██        ▒██ ▒██     ██ ▒██     ██ ▒▒▒▒▒▒▒▒▒▒▒▒  │
  18.        │  ▒▒██ ▒▒▒▒██ ▒██ ▒██ ▒▒▒▒▒▒▒▒██ ▒██ ▒▒▒▒██ ▒██ ▒▒▒▒██ ▒▒▒▒▒▒▒▒▒▒▒▒  │
  19.        │  ▒▒██ ▒▒▒▒██ ▒██ ▒█████████▒▒██ ▒██ ▒▒▒▒██ ▒██ ▒▒▒▒██ ▒▒▒▒▒▒▒▒▒▒▒▒  │
  20.        │  ▒▒██ ▒▒▒▒██ ▒██ ▒▒      ██ ▒██ ▒██ ▒▒▒▒██ ▒██ ▒▒▒▒██ ▒▒▒▒▒▒▒▒▒▒▒▒  │
  21.        │  ▒▒▒██ ▒▒██ ▒▒██ ▒▒▒▒▒▒▒▒██ ▒██ ▒██ ▒▒▒▒██ ▒██ ▒▒▒▒██ ▒▒▒▒▒▒▒▒▒▒▒▒  │
  22.        │  ▒▒▒▒█████ ▒▒▒██ ▒█████████ ▒██ ▒█████████ ▒██ ▒▒▒▒██ ▒▒▒▒▒▒▒▒▒▒▒▒  │
  23.        │  ▒▒▒▒▒     ▒▒▒▒  ▒▒         ▒▒  ▒▒         ▒▒  ▒▒▒▒▒  ▒▒▒▒▒▒▒▒▒▒▒▒  │
  24.        │  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  │
  25.        │                                                                     │
  26.        │    The easy to use, reliable and powerful library for a textmode    │
  27.        │                        based user interface.                        │
  28.        │                                                                     │
  29.        │     This manual may be freely distributed in its original form.     │
  30.        │              Modifications of any kind are prohibited.              │
  31.        │                                                                     │
  32.        │   This manual and software are made available without warranties.   │
  33.        │   TNG SOFT nor the author shall be held liable to the user or any   │
  34.        │   other person or entity with respect to any liability, loss, or    │
  35.        │   damage caused or alleged to be caused directly or indirectly by   │
  36.        │                      this manual or software.                       │
  37.        │                                                                     │
  38.        │         This software is shareware, and must be registered.         │
  39.        │                                                                     │
  40.        │             This library is the property of the author.             │
  41.        │               You are granted the rights to use only.               │
  42.        │                                                                     │
  43.        │          EasyVision is a registered trademark of TNG SOFT.          │
  44.        │                                                                     │
  45.        │        The original manual and software may be obtained from        │
  46.        │                                                                     │
  47.        │                        STARFLEET COMMAND BBS                        │
  48.        │                      (418)  525-6899/4740/6803                      │
  49.        │                         FidoNet: 1:240/1701                         │
  50.        │                     F'req magic name >  EVISION                     │
  51.        │                                                                     │
  52.        │                                                                     │
  53.        │  ▀█▀ █▀█ █▀▀  █▀▀ █▀█ █▀▀ ▀█▀                                       │
  54.        │   █  █ █ █▄█  ▄▄█ █▄█ █▀   █          The Next Generation Software  │
  55.        │                                                                     │
  56.        └─────────────────────────────────────────────────────────────────────┘
  57.  
  58.  
  59.  
  60.  
  61.  
  62.           EasyVision 1.0           User's Guide                      Page 2
  63.  
  64.  
  65.  
  66.  
  67.           Chapter  1:    Overview .....................................   7
  68.                               Why EasyVision ..........................   7
  69.                               What is EasyVision ......................   7
  70.                               Current version .........................   8
  71.                               A word about registration ...............   8
  72.                               What's next ? ...........................   9
  73.  
  74.           Chapter  2:    Getting started ..............................  10
  75.                               Library specifics .......................  10
  76.                               Installation ............................  10
  77.                               How to use this library .................  11
  78.                               How to use this document ................  11
  79.  
  80.           Chapter  3:    Using EasyVision's functions .................  13
  81.                               assert ..................................  14
  82.                               getkey ..................................  15
  83.                               getheap .................................  17
  84.                               freeheap ................................  17
  85.                               hstrlen .................................  18
  86.                               hstrcpy .................................  18
  87.                               savevideo ...............................  19
  88.                               restorevideo ............................  19
  89.                               savecursor ..............................  20
  90.                               restorecursor ...........................  20
  91.  
  92.           Chapter  4:    Using EasyVision's classes ...................  21
  93.  
  94.           Chapter  5:    EasyVision's TDesktop class ..................  22
  95.                               settextmode .............................  23
  96.                               setdeskcolors ...........................  23
  97.                               settexture ..............................  24
  98.                               settitle ................................  24
  99.                               open ....................................  25
  100.                               close ...................................  25
  101.                               insert ..................................  26
  102.                               refresh .................................  26
  103.  
  104.           Chapter  6:    EasyVision's TStatusline class ...............  27
  105.                               setleftcolors ...........................  28
  106.                               setrightcolors ..........................  28
  107.                               displayleft .............................  29
  108.                               displayright ............................  29
  109.                               refresh .................................  30
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.           EasyVision 1.0           User's Guide                      Page 3
  122.  
  123.  
  124.  
  125.  
  126.  
  127.           Chapter  7:    EasyVision's TMenubar class ..................  31
  128.                               setcolors ...............................  32
  129.                               sethelp .................................  33
  130.                               setslptr ................................  33
  131.                               addmenu .................................  34
  132.                               additem .................................  35
  133.                               trough ..................................  36
  134.                               itemavail ...............................  36
  135.                               refresh .................................  37
  136.  
  137.           Chapter  8:    EasyVision's TWindow class ...................  38
  138.                               wingetscreenheight ......................  39
  139.                               wingetscreenwidth .......................  39
  140.                               winsetpos ...............................  40
  141.                               wingetrow ...............................  41
  142.                               wingetcol ...............................  41
  143.                               winsetsize ..............................  42
  144.                               wingetheight ............................  42
  145.                               wingetwidth .............................  42
  146.                               winsetcolors ............................  43
  147.                               winsettitle .............................  43
  148.                               winsethelp ..............................  44
  149.                               winsetslptr .............................  44
  150.                               winopen .................................  45
  151.                               winclose ................................  45
  152.                               winclear ................................  46
  153.                               winwrite ................................  47
  154.                               winswrite ...............................  49
  155.                               wintext .................................  50
  156.                               wintextfile .............................  51
  157.                               winmove .................................  52
  158.                               winscroll ...............................  52
  159.                               wininput ................................  53
  160.  
  161.                               fieldsetlengths .........................  54
  162.                               fieldsetcolors ..........................  54
  163.                               fieldsetftr .............................  55
  164.                               fieldsetattrib ..........................  55
  165.                               fieldcreate .............................  56
  166.                               fieldinput ..............................  57
  167.                               fieldsetasw .............................  58
  168.                               fieldgetasw .............................  58
  169.  
  170.                               buttonsetcolors .........................  59
  171.                               buttoncreate ............................  60
  172.                               buttonpush ..............................  62
  173.                               buttoninput .............................  63
  174.                               buttonsetavail ..........................  64
  175.  
  176.  
  177.  
  178.  
  179.  
  180.           EasyVision 1.0           User's Guide                      Page 4
  181.  
  182.  
  183.  
  184.  
  185.  
  186.           Chapter  9:    EasyVision's Demo Program ....................  65
  187.                               The demo program ........................  65
  188.  
  189.           Chapter 10:    Things you should not do .....................  66
  190.  
  191.           Appendix A:    Extended keycodes ............................  67
  192.  
  193.           Appendix B:    Color codes and Symbolic constants ...........  68
  194.  
  195.           Appendix C:    Trademarks ...................................  69
  196.  
  197.           Appendix D:    Common Questions and Answers .................  70
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.           EasyVision 1.0           User's Guide                      Page 5
  240.  
  241.  
  242.  
  243.  
  244.           This page intentionally left blank
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.           EasyVision 1.0           User's Guide                      Page 6
  299.  
  300.  
  301.  
  302.  
  303.           This page intentionally left blank
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.           EasyVision 1.0           User's Guide                      Page 7
  358.  
  359.  
  360.  
  361.  
  362.           █████████████████████████████████████████████████████████████████
  363.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  364.           C  H  A  P  T  E  R     1                                Overview
  365.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  366.  
  367.           Welcome to EasyVision 1.0 !  This C++ library provides an easy to
  368.           use, reliable and powerful textmode based user interface.
  369.  
  370.  
  371.           Why EasyVision ?
  372.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  373.  
  374.           After  looking at  some shareware  and commercial  user interface
  375.           packages, and reading comments about them from a lot of C and C++
  376.           programmers,  it  was clear  that  something was  missing.   When
  377.           people  talked  about TURBO  VISION  from BORLAND,  it  was their
  378.           opinion  that it was too difficult to  use.  In my own opinion, I
  379.           think  that TURBO VISION is one  of the greatest work of software
  380.           engineering  around.   It is  the most  powerful and professional
  381.           user  interface  in existence.   It  is  so well  implemented and
  382.           thought  out that it is the  standard in textmode interfaces that
  383.           everyone  is following, including  EasyVison !   (Hope they don't
  384.           sue  me...)  But, it  is so big that it  is a language in itself,
  385.           and that is what makes people afraid of using it !
  386.  
  387.           On  the other hand, there are those shareware libraries.  Some of
  388.           them  are extraordinarily well  done, but are  still much to big.
  389.           I'm  thinking about CXL  right now.   Others are to  small and to
  390.           unreliable to develop serious software.
  391.  
  392.           So,  what's a C++ programmer to do ?   Maybe just what I did, and
  393.           write  all of his interface himself.  But what a waste if I'm the
  394.           only  one using  it !   Why not  make it available  to everyone ?
  395.           Well, that's what EasyVision is all about !
  396.  
  397.  
  398.           What is EasyVision
  399.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  400.  
  401.           EasyVision  is  a textmode  based, windowed  user interface.   It
  402.           provides  a DESKTOP,  a STATUSLINE,  a MENUBAR,  WINDOWS, CONTEXT
  403.           SENSITIVE ONLINE HELP, and much much more...
  404.  
  405.           EasyVision was created with 2 important priorities.
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.           EasyVision 1.0           User's Guide                      Page 8
  417.  
  418.  
  419.  
  420.  
  421.  
  422.           First,  it should be EASY to learn and EASY to use.  Provide only
  423.           the  big, important functions to the user.  A user doesn't need a
  424.           library function if he can write it himself in less than 25 lines
  425.           of  code.   But  make sure  that those  big functions  are REALLY
  426.           powerful and produce professional looking results !  This library
  427.           hasn't   been  written  to  provide  every  fonctions  needed  to
  428.           developpe  full featured  word processors  or the  likes.   It is
  429.           there  to  give  you  a strong  and  reliable  skeleton  for your
  430.           programs.  It is up to you to come up with the 'meat'.
  431.  
  432.           Second,  those  functions should  be totally  bug free  and crash
  433.           proof.   EasyVision should  validate all parameters  to make sure
  434.           nothing  wrong can happen.   Don't rely  on the good  will of the
  435.           programmer   to  check   out  is  code   for  out   of  range  or
  436.           non-initialised parameters.
  437.  
  438.           That  was what EasyVision was suppose to be.  Well, EasyVision is
  439.           still  better than that !  At  this point, if you haven't already
  440.           done so, you should run the demonstation program 'EVISION.EXE' to
  441.           see  the results of  about 200 lines  of C++ codes  that uses the
  442.           EasyVision library...
  443.  
  444.           If  you find the results  interesting, it is up  to you to go on.
  445.           All  functions and classes are  FULLY documented in the following
  446.           pages.   The  source code  of the  demonstration program  is also
  447.           included  (and commented) in  the archive.   It provides you with
  448.           'real' examples of how to use this library.
  449.  
  450.  
  451.           Current Version
  452.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  453.  
  454.           The   complete  history  of  EasyVision   can  be  found  in  the
  455.           HISTORY.TXT file, included in the archive.
  456.  
  457.  
  458.           A word about registration
  459.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  460.  
  461.           EasyVision  1.0 is  made available  under the  shareware concept.
  462.           This means that after an evaluation period of 30 days, you should
  463.           register  this software with its author.  Furthermore, if you use
  464.           this  software to  create your  own shareware  software, YOU MUST
  465.           REGISTER EASYVISION.
  466.  
  467.           Registration grants you a life-time license to use this software,
  468.           and all following versions or updates.
  469.  
  470.           EasyVision  is NOT  crippled in any  way.  There  is absolutly no
  471.           differences between the registered or unregistered version.
  472.  
  473.  
  474.  
  475.           EasyVision 1.0           User's Guide                      Page 9
  476.  
  477.  
  478.  
  479.  
  480.  
  481.           To  register this software, fill in the REGISTER.TXT registration
  482.           form included in the archive.  Registration is $25 CANADIAN.  You
  483.           will  receive  via  'snail  mail'  an  official  registered  user
  484.           certificate  with your  registration number.   For  $35 CANADIAN,
  485.           you'll  also receive a bonded printed  copy of the latest version
  486.           of this manual.
  487.  
  488.           EasyVision and TNG SOFT ENTERPRISES are registered trade marks.
  489.  
  490.  
  491.           What's Next ?
  492.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  493.  
  494.           There won't be many new commands !  EasyVision will always remain
  495.           EASY  to use,  to leave the  programmer at  more important tasks.
  496.           However,  I welcome your suggestions to what you think is missing
  497.           from  this package.   Remember though, that  I will never include
  498.           functions that are not directly related to the user interface.
  499.  
  500.           I  will try to  improve the functions  and classes already there.
  501.           I'd   like  to  add  an  integrator  for  the  windows,  allowing
  502.           background  windows  to be  brought in  the foreground,  a window
  503.           refresh   function,  better  text  output  facilities  and  mouse
  504.           support.
  505.  
  506.           So, that's about it for now !  Have fun and enjoy !
  507.  
  508.  
  509.           Rémy Gendron
  510.           author of EasyVision
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.           EasyVision 1.0           User's Guide                     Page 10
  535.  
  536.  
  537.  
  538.  
  539.           █████████████████████████████████████████████████████████████████
  540.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  541.           C  H  A  P  T  E  R     2                         Getting started
  542.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  543.  
  544.           Installing and using the EasyVision library is very simple.
  545.  
  546.  
  547.           Library specifics
  548.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  549.  
  550.           EasyVision  was  developped  under  TURBO  C++  1.01,  then later
  551.           transfered to BORLAND C++ 3.0.
  552.  
  553.           The  code  was  compiled  under  the  HUGE  memory  model.    All
  554.           prototypes  were declared as FAR  functions and all pointers were
  555.           explicitely  declared HUGE.  This will provide full compatibility
  556.           when linking to any memory model size.
  557.  
  558.           Unless  you REALLY know what you are doing, you should always use
  559.           HUGE pointers.  FAR pointers can cause wrap around and comparison
  560.           problems  because  they  are not  normalised.    All EasyVision's
  561.           functions use huge pointers.
  562.  
  563.           The  video output  is done  through direct  screen writes.   This
  564.           makes for incredibly fast output.  Going through the BIOS is just
  565.           to  slow.  However,  under multitaskers like  Deskview, who often
  566.           work  in textmode, screen bleeds can  occur if the application is
  567.           running  in the  background.   Use the  virtualising options when
  568.           running under DeskView.
  569.  
  570.           All  EasyVision's  header  files use  conditional  compilation to
  571.           prevent  redeclaration errors at compile time.  So, if you're not
  572.           sure  if a  header was  previously included  (possibly by another
  573.           header file), feel free to include it again.
  574.  
  575.  
  576.           Installation
  577.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  578.  
  579.           Unpack the archive in a temporary directory.  If you haven't done
  580.           so,  you should really  print all of the  USER'S GUIDE for easier
  581.           reading.  It as been formatted to print at 60 lines per pages.
  582.  
  583.           Put  all header files (.HPP) into  an INCLUDE directory.  Just to
  584.           be  sure you  won't overwrite  existing header  files, you should
  585.           make  a  separate  include  directory,  then  include  it  in the
  586.           'include' path of your compilator.
  587.  
  588.           Then  put the EasyVision  library (EVISION.LIB) into  one of your
  589.           LIBRARY directories.
  590.  
  591.  
  592.  
  593.           EasyVision 1.0           User's Guide                     Page 11
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.           How to use this library
  601.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  602.  
  603.           To  use an EasyVision function or  class, just include its header
  604.           file  in  your  source code.    YOU  MUST NOT  write  a prototype
  605.           yourself based on the prototype written in this manual.  The real
  606.           prototypes  have  additional  informations  in  them.    So,  for
  607.           example:
  608.  
  609.           #include <stdio.h>                      // A standard header file
  610.           #include "getkey.hpp"                // An EasyVision header file
  611.  
  612.           void main ()
  613.           {
  614.                ...
  615.                                   // Here you can use the 'getkey' function
  616.                ...
  617.                return ;
  618.           }
  619.  
  620.           You  then have to  link all your  modules together, including the
  621.           EVISION.LIB  library.   You do  that by  including EVISION.LIB in
  622.           your  project.    EVISION.LIB  must be  in  one  of  your LIBRARY
  623.           directories.  That's all there is to it !
  624.  
  625.           If  you get linker  errors, that's probably  because you compiled
  626.           your  sources in C ANSI.   You must compile  in C++, or else make
  627.           interfaces with the 'extern C' keyword.
  628.  
  629.           All  arguments to functions  are FULLY validated.   An EasyVision
  630.           function will never let you get away if it is called incorrectly.
  631.           If something is wrong, the program is stopped and a plain english
  632.           error  message tells you what went wrong, where and why !  In the
  633.           function descriptions, when it says that you SHOULD NOT or CANNOT
  634.           do  something,  it  means  that  if  you  do  it,  you'll  get an
  635.           EasyVision error message.  Your program will not crash !
  636.  
  637.           See  the chapter THINGS YOU SHOULD NOT  DO for hints on things to
  638.           watch out for.
  639.  
  640.  
  641.           How to use this document
  642.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  643.  
  644.           The following conventions are used in the document:
  645.  
  646.                     All  of  EasyVision's functions  were declared  of type
  647.                     far,   but  the  far  modifier  was  left  out  of  the
  648.                     prototypes in this manual.
  649.  
  650.  
  651.  
  652.           EasyVision 1.0           User's Guide                     Page 12
  653.  
  654.  
  655.  
  656.  
  657.  
  658.           The following symbols were used in the text:
  659.  
  660.                     ''   Regular C and C++ keywords
  661.  
  662.                     {}   EasyVision keywords
  663.  
  664.                     <>   Arguments to functions
  665.  
  666.                     []   Optional arguments are enclosed in brakets
  667.  
  668.                     -->  Important remarks (that you MUST read)
  669.  
  670.                     CAPS Keyboard keys
  671.  
  672.           Chapter  3  describes  all  EasyVision's  functions.    Chapter 4
  673.           introduces  you  to the  basics of  using a  class object.   Then
  674.           chapters 5 to 8 describe the 4 EasyVision's classes.
  675.  
  676.           At the end, reference informations can be found in appendixes.
  677.  
  678.           I  will gladly answer  any questions.  I  WILL NOT ANSWER THROUGH
  679.           NETMAIL.    YOU  MUST  REACH  ME  VIA  THE  C++  FIDONET ECHOMAIL
  680.           CONFERENCE.    I think  that most  questions  can be  answered by
  681.           looking at the included demo program (DEMO.CPP).
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.           EasyVision 1.0           User's Guide                     Page 13
  712.  
  713.  
  714.  
  715.  
  716.           █████████████████████████████████████████████████████████████████
  717.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  718.           C  H  A  P  T  E  R     3            Using EasyVision's Functions
  719.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  720.  
  721.           This  version of the  EasyVision library has  10 functions.  They
  722.           provide   for  parameter  validations,   fatal  errors  handling,
  723.           keyboard inputs, automatic F1 online help.  Also, some frequently
  724.           used  functions  have been  rewritten  to accept  huge parameters
  725.           without  the need for typecasting.  All these functions are fully
  726.           described in the following pages.
  727.  
  728.           A function description uses the following format:
  729.  
  730.  
  731.           FUNCTION NAME
  732.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  733.  
  734.           ■ Summary Short description of this function behavior.
  735.  
  736.           ■ Syntax  #include "header.h"
  737.                     ReturnType FonctionName (<param>, <param>, ...) ;
  738.  
  739.                     YOU  MUST  NEVER  WRITE  A  PROTOTYPE  FOR  A  FUNCTION
  740.                     YOURSELF.   ALWAYS USE  THE PROPER HEADER  FILES.  THEY
  741.                     HAVE ADDITIONAL INFORMATIONS IN THEM !
  742.  
  743.                -->  When parameters are in brakets ([]), they are optional.
  744.                     IF  YOU  WANT  TO INCLUDE  AN  OPTIONAL  PARAMETER, ALL
  745.                     PARAMETERS BEFORE THAT ONE MUST BE INCLUDED AS WELL.
  746.  
  747.           ■ Remarks Parameters and usage are described here when needed.
  748.  
  749.           ■ Return  The returned value of the function is explained here.
  750.  
  751.           ■ Example Examples of various calls to this function.
  752.  
  753.  
  754.  
  755.           So, here are the EasyVision's functions...
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.           EasyVision 1.0           User's Guide                     Page 14
  771.  
  772.  
  773.  
  774.  
  775.           ASSERT
  776.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  777.  
  778.           ■ Summary This  function  will  ASSERTain that  a  <condition> is
  779.                     TRUE.   If  it is, it  will return  immediately with no
  780.                     effect, and minimum overhead.
  781.  
  782.                     If   the  condition  is  FALSE,  the  program  will  be
  783.                     terminated  in an orderly fashion.  {assert} will clear
  784.                     the  screen, print an error  message, and terminate the
  785.                     program  with a call  to 'exit'.   This closes all open
  786.                     files,  releases any  memory allocated on  the heap and
  787.                     exit to DOS with an ERROR LEVEL of 1.
  788.  
  789.           ■ Syntax  #include "assert.hpp"
  790.                     void  assert (int  condition [,char  huge *fctname, int
  791.                     errorcode, char huge *errortext]) ;
  792.  
  793.           ■ Remarks If  <condition> evaluates to FALSE, the program will be
  794.                     terminated  and  <fctname>, the  current  function name
  795.                     will be displayed.  This will help find the location of
  796.                     the  error.  You can specify an  error code.  If 0, you
  797.                     must  provide  an  error  message  with  the  parameter
  798.                     <errortext>.   You can also use predefined error codes.
  799.                     In  this  case,  you  don't need  to  specify  an error
  800.                     message.
  801.  
  802.                     1:   "Not  enough memory to instantiate  a class on the
  803.                          heap."
  804.                     2:   "Not  enough  memory  to create  a  struct  on the
  805.                          heap."
  806.                     3:   "Not  enough  memory  to  allocate  the  requested
  807.                          amount of bytes."
  808.                     4:   "Out of memory."
  809.                     5:   "File not found."
  810.                     6:   "Path not found."
  811.                     7:   "File access denied."
  812.                     8:   "Input/Output error."
  813.                     9:   "Unrecoverable fatal error."
  814.  
  815.           ■ Return  None
  816.  
  817.           ■ Example assert (nbrecord>0,"datasearch",0,"Database empty !") ;
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.           EasyVision 1.0           User's Guide                     Page 15
  830.  
  831.  
  832.  
  833.  
  834.           GETKEY
  835.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  836.  
  837.           ■ Summary This   is  a  replacement   for  the  familiar  'getch'
  838.                     function.
  839.  
  840.           ■ Syntax  #include "getkey.hpp"
  841.                     int getkey (int filter [,char *helptext]) ;
  842.  
  843.           ■ Remarks One  of 'getch' weakness is  its inability to deal with
  844.                     the way extended keys are internaly represented.  Those
  845.                     are  the keys that don't  have an ASCII code associated
  846.                     with  them.    For  exemple,  the  function,  arrow and
  847.                     editing keys all return an extended keycode.
  848.  
  849.                     This   new  {getkey}  function  will  deal  with  these
  850.                     extended  keys by adding 256  to the extended key code.
  851.                     Appendix A lists all of the extended keycodes currently
  852.                     available on an extended keyboard.
  853.  
  854.                     You  MUST specify a <filter> to be used by the {getkey}
  855.                     function.   A filter of 0 will allow any key to be read
  856.                     and returned by the function.  You can also provide the
  857.                     ASCII  or extended key code (remember to add 256 to the
  858.                     real  code) of the  only key allowed  to be returned by
  859.                     the  function.  This provides an easy way to WAIT FOR a
  860.                     specific  key.  The function will then return with that
  861.                     keycode, only when that key has been pressed.
  862.  
  863.                -->  When  you  call  {getkey},  it  will  first  flush  the
  864.                     keyboard  buffer  of any  keys  already present.   When
  865.                     waiting  for a key,  if the F1 key  is pressed, an help
  866.                     window  will pop up automatically  !  You can optionaly
  867.                     give  {getkey}  a  pointer  to  some  context sensitive
  868.                     <helptext>.   If no pointer  is supplied, it is assumed
  869.                     that  no help is  available at this  time, and the help
  870.                     window  pops up saying so.   This help window will take
  871.                     care  of itself.  You don't  have to worry about screen
  872.                     coordinates, colors, key input or anything.
  873.  
  874.                     The  help text is  an array of chars,  that need not be
  875.                     formated  in any  way.  The  help window  will read the
  876.                     array  and display it with word  wrapping at the end of
  877.                     the  lines.  It can also be of any length.  If the text
  878.                     cannot  fit  in  one  window,  a  more  prompt  will be
  879.                     showned.  At any time, the user can leave help with the
  880.                     ESC key.
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.           EasyVision 1.0           User's Guide                     Page 16
  889.  
  890.  
  891.  
  892.  
  893.  
  894.                     Any extra spaces will be removed from the text, leaving
  895.                     only  one space between each  word.  Any leading spaces
  896.                     to a line will also be removed.  If you want to begin a
  897.                     line with spaces, or separate some words with more than
  898.                     one  space, you must use  the underscore (_) character.
  899.                     You  can highlight  you text  by surrounding characters
  900.                     with the tilde (~) character.
  901.  
  902.                -->  If  the F1 key  is pressed, the  help window is showned
  903.                     and  closed, then  the function waits  for another key.
  904.                     F1  will never  be returned  by that  function !   If a
  905.                     <filter>  is provided, the F1  key will still bring the
  906.                     help  window.  Beware of NEVER setting the filter to an
  907.                     impossible key entry or to the F1 keycode (315), or you
  908.                     will be trapped by the {getkey} function !
  909.  
  910.           ■ Return  If  a normal key was pressed,  the returned value is an
  911.                     int representing the ASCII code of that key.  (1-255)
  912.  
  913.                     If  an extended key was  pressed, the returned value is
  914.                     an  int representing  the extended  key code  plus 256.
  915.                     (256-396)
  916.  
  917.           ■ Example getkey (0) ;           // Returns the first key pressed
  918.                                                     // No help is available
  919.                     getkey (13,edithelp) ;        // Wait for the ENTER key
  920.                                                      // With help available
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.           EasyVision 1.0           User's Guide                     Page 17
  948.  
  949.  
  950.  
  951.  
  952.           GETHEAP
  953.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  954.  
  955.           ■ Summary Getheap replaces 'farmalloc'.
  956.  
  957.           ■ Syntax  #include "farheap.hpp"
  958.                     char huge *getheap (unsigned long nbytes) ;
  959.  
  960.           ■ Remarks Allocates <nbytes> bytes on the far heap.
  961.  
  962.           ■ Return  In  C++ you  cannot assign  a void  pointer to  a typed
  963.                     pointer  without a  typecast.   As you  will most often
  964.                     want a huge pointer to char, this is what this function
  965.                     returns.    If you  want to  assign  this pointer  to a
  966.                     pointer to a different type, just use a typecast.
  967.  
  968.           ■ Example char huge *ptr1 ;
  969.                     int  huge *ptr2 ;
  970.                     ptr1 = getheap (1024) ;
  971.                     ptr2 = (int huge*) getheap (100) ;
  972.  
  973.  
  974.           FREEHEAP
  975.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  976.  
  977.           ■ Summary Freeheap replaces 'farfree'.
  978.  
  979.           ■ Syntax  #include "farheap.hpp"
  980.                     void freeheap (void huge *heapptr) ;
  981.  
  982.           ■ Remarks The   only  difference  from  'farfree'  is  that  this
  983.                     function  offers  the convenience  of accepting  a huge
  984.                     pointer as argument.
  985.  
  986.           ■ Return  None
  987.  
  988.           ■ Example char huge *ptr ;
  989.                     ptr = getheap (sizeof (object)) ;    // Allocate memory
  990.                     freeheap (ptr) ;                         // Free memory
  991.                     ptr = NULL ;                      // Always a good idea
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.           EasyVision 1.0           User's Guide                     Page 18
  1007.  
  1008.  
  1009.  
  1010.  
  1011.           HSTRLEN
  1012.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1013.  
  1014.           ■ Summary This  is a  huge version of  'strlen'.   It returns the
  1015.                     length of a string.
  1016.  
  1017.           ■ Syntax  #include "hugefcts.hpp"
  1018.                     size_t hstrlen (char huge *string) ;
  1019.  
  1020.           ■ Remarks The only difference with 'strlen' is that this function
  1021.                     offers  the convenience of accepting  a huge pointer as
  1022.                     argument.
  1023.  
  1024.           ■ Return  The  length of the string.   The type size_t is defined
  1025.                     in <stdio.h> as an unsigned int.
  1026.  
  1027.           ■ Example length = hstrlen (text) ;
  1028.  
  1029.  
  1030.           HSTRCPY
  1031.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1032.  
  1033.           ■ Summary This is a huge version of 'strcpy'.  It copies a string
  1034.                     into another.
  1035.  
  1036.           ■ Syntax  #include "hugefcts.hpp"
  1037.                     char huge *hstrcpy (char huge *dest, char huge *src) ;
  1038.  
  1039.           ■ Remarks The only difference from 'strcpy' is that this function
  1040.                     offers  the convenience  of accepting  huge pointers as
  1041.                     arguments.
  1042.  
  1043.           ■ Return  A huge pointer to the destination string.
  1044.  
  1045.           ■ Example char huge *string ;
  1046.                     string = getheap (20) ;
  1047.                     hstrcpy (string,"Hello there !") ;
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.           EasyVision 1.0           User's Guide                     Page 19
  1066.  
  1067.  
  1068.  
  1069.  
  1070.           SAVEVIDEO
  1071.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1072.  
  1073.           ■ Summary This  will  save  the current  screen  attributes  in a
  1074.                     text_info  structure.  It has  exactly the same effects
  1075.                     as  a call to 'gettextinfo'.  The difference is that it
  1076.                     can also save the actual screen content.
  1077.  
  1078.           ■ Syntax  #include "screen.hpp"
  1079.                     void  savevideo  (text_info huge  *ti[,  char huge*huge
  1080.                     *savedscr]) ;
  1081.  
  1082.           ■ Remarks All  members of the text_info structure <ti> are filled
  1083.                     with  this function.  <savedscr> is a huge pointer to a
  1084.                     huge  char pointer.  If  this argument is provided, the
  1085.                     screen  content will also  be saved to  a buffer in the
  1086.                     heap, and the huge pointer to char will be set to point
  1087.                     to this buffer.
  1088.  
  1089.           ■ Return  None
  1090.  
  1091.           ■ Example text_info ti ;
  1092.                     char huge *scrbfr ;
  1093.                     savevideo (&ti,&scrbfr) ;
  1094.  
  1095.  
  1096.           RESTOREVIDEO
  1097.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1098.  
  1099.           ■ Summary This  function will  restore the screen  video mode and
  1100.                     the  text window size  from a text_info  structure.  It
  1101.                     can  also restore the screen content if it was saved by
  1102.                     a previous call to {savevideo}.
  1103.  
  1104.           ■ Syntax  #include "screen.hpp"
  1105.                     void  restorevideo (text_info huge *ti[, char huge*huge
  1106.                     *savedscr]) ;
  1107.  
  1108.           ■ Remarks The  text_info  structure  must  have  been  previously
  1109.                     filled  with  {savevideo}.   The same  is true  for the
  1110.                     previous screen content. 
  1111.  
  1112.           ■ Return  None
  1113.  
  1114.           ■ Example restorevideo (&ti,&scrbfr) ;
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.           EasyVision 1.0           User's Guide                     Page 20
  1125.  
  1126.  
  1127.  
  1128.  
  1129.           SAVECURSOR
  1130.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1131.  
  1132.           ■ Summary This   function  will   save  all   cursor  attributes,
  1133.                     INCLUDING  THE CURSOR TYPE,  in a {cur_info} structure.
  1134.                     Those  attributes  are:    colors,  x  pos,  y  pos and
  1135.                     cursorshape.    It  will  not  save  the  other  screen
  1136.                     attributes, and is therefore faster than {savevideo}.
  1137.  
  1138.           ■ Syntax  #include "screen.hpp"
  1139.                     void savecursor (cur_info huge *ci) ;
  1140.  
  1141.           ■ Remarks The  cur_info structure is as follow, and is defined in
  1142.                     "screen.hpp".
  1143.  
  1144.                     struct cur_info
  1145.                     {
  1146.                        unsigned char attribute ;           // Cursor colors
  1147.                        unsigned char curx ;            // Cursor X position
  1148.                        unsigned char cury ;            // Cursor Y position
  1149.                        unsigned int  curtype ;               // Cursor type
  1150.                     } ;
  1151.  
  1152.           ■ Return  None
  1153.  
  1154.           ■ Example cur_info ci ;
  1155.                     savecursor (&ci) ;
  1156.  
  1157.  
  1158.           RESTORECURSOR
  1159.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1160.  
  1161.           ■ Summary This  function  will  restore  all  cursor  attributes,
  1162.                     INCLUDING THE CURSOR TYPE, from a cur_info structure.
  1163.  
  1164.           ■ Syntax  #include "screen.hpp"
  1165.                     void restorecursor (cur_info huge *ci) ;
  1166.  
  1167.           ■ Remarks The  cursor attributes must  have been previously saved
  1168.                     with {savecursor}.  
  1169.  
  1170.           ■ Return  None
  1171.  
  1172.           ■ Example cur_info ci ;
  1173.                     savecursor (&ci) ;
  1174.                     ...
  1175.                     restorecursor (&ci) ;
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.           EasyVision 1.0           User's Guide                     Page 21
  1184.  
  1185.  
  1186.  
  1187.  
  1188.           █████████████████████████████████████████████████████████████████
  1189.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1190.           C  H  A  P  T  E  R     4              Using EasyVision's Classes
  1191.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1192.  
  1193.           The  EasyVision library has 4 classes.  They provide a desktop, a
  1194.           statusline,  a  menubar and  windows.   Those  classes  are fully
  1195.           described in the following pages.
  1196.  
  1197.           A classe description uses the following format:
  1198.  
  1199.           First,  the description of the class itself, its behavior, how it
  1200.           is  related to the  other classes and the  interface.  Then, each
  1201.           member  function  of  the  class is  presented  in  the following
  1202.           format:
  1203.  
  1204.  
  1205.           MEMBER FUNCTION NAME
  1206.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1207.  
  1208.           ■ Summary Short description of this function behavior.
  1209.  
  1210.           ■ Syntax  #include "header.h"
  1211.                     ReturnType FonctionName (<param>, <param>, ...) ;
  1212.  
  1213.                     YOU  MUST  NEVER  WRITE  A  PROTOTYPE  FOR  A  FUNCTION
  1214.                     YOURSELF.   ALWAYS USE  THE PROPER HEADER  FILES.  THEY
  1215.                     HAVE ADDITIONAL INFORMATIONS IN THEM !
  1216.  
  1217.                -->  When parameters are in brakets ([]), they are optional.
  1218.                     IF  YOU  WANT  TO INCLUDE  AN  OPTIONAL  PARAMETER, ALL
  1219.                     PARAMETERS BEFORE THAT ONE MUST BE INCLUDED AS WELL.
  1220.  
  1221.           ■ Remarks Parameters and usage are described here when needed.
  1222.  
  1223.           ■ Return  The returned value of the function is explained here.
  1224.  
  1225.           ■ Example Examples of various calls to this function.
  1226.  
  1227.  
  1228.  
  1229.           Using  classes is quite  easy !   First you declare  a pointer to
  1230.           this  class.   Then you  instantiate (create)  an object  of this
  1231.           class  type  with  the operator  'new'.    Now you  can  call the
  1232.           classe's  member functions with  the '->' operator.   When you're
  1233.           finished,  you free the memory taken  by this class instance with
  1234.           'delete'.
  1235.  
  1236.           Many  examples are available in the source code of the EasyVision
  1237.           demo program (DEMO.CPP).
  1238.  
  1239.  
  1240.  
  1241.  
  1242.           EasyVision 1.0           User's Guide                     Page 22
  1243.  
  1244.  
  1245.  
  1246.  
  1247.           █████████████████████████████████████████████████████████████████
  1248.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1249.           C  H  A  P  T  E  R     5             EasyVision's TDESKTOP class
  1250.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1251.  
  1252.           The  {tdesktop} class  is the first  one to be  instantiated in a
  1253.           program that uses the EasyVision user interface.
  1254.  
  1255.           This  class will  save the  current screen,  initialise the video
  1256.           screen to the video mode of your choice, and display the desktop.
  1257.           The   desktop  is  the  background  on  which  the  menubar,  the
  1258.           statusline  and your  windows will be  displayed.   You will also
  1259.           call  this  class  at the  end  of  your program  to  restore the
  1260.           previous  video  mode,  restore  the  previous  screen  and reset
  1261.           default colors and cursor position.
  1262.  
  1263.           The  {tdesktop} class as built in  default values.  Only one call
  1264.           is  required to do the work.  The desktop will autosize itself to
  1265.           the  screen.  However, if you  would like to change those default
  1266.           behaviors, other functions are provided to do so.
  1267.  
  1268.           The  {tdesktop} class can be  used alone by itself.   That is, it
  1269.           can be the only class you will use in your application.
  1270.  
  1271.           On  the following pages, you will  find each of tdesktop's member
  1272.           functions.
  1273.  
  1274.           An  example of instantiating a {tdesktop}  object is given in the
  1275.           source code of the EasyVision's demo program (DEMO.CPP).
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.           EasyVision 1.0           User's Guide                     Page 23
  1302.  
  1303.  
  1304.  
  1305.  
  1306.           TDESKTOP::SETTEXTMODE
  1307.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1308.  
  1309.           ■ Summary Sets  the  textmode  in  which  {open}  will  draw  the
  1310.                     desktop.   This has no  effect on the current textmode.
  1311.                     It  will only take  effect when {open}  will be called.
  1312.                     The {refresh} function uses the current textmode.  This
  1313.                     call  is optional.  If it is  not made before a call to
  1314.                     {open}, textmode C80 (3) is assumed.
  1315.  
  1316.           ■ Syntax  #include "tdesktop.hpp"
  1317.                     void settextmode (int mode) ;
  1318.  
  1319.           ■ Remarks Symbolic constant | Value | Text mode
  1320.                     ------------------+-------+-------------------------
  1321.                     LASTMODE          |  -1   | Previous text mode
  1322.                     BW40              |   0   | Black and white, 40 cols
  1323.                     C40               |   1   | Color, 40 columns
  1324.                     BW80              |   2   | Black and white, 80 cols
  1325.                     C80               |   3   | Color, 80 columns
  1326.                     MONO              |   7   | Monochrome, 80 columns
  1327.                     C4350             |  64   | EGA 43-line, VGA 50-line
  1328.  
  1329.                     To  use  the  symbolic  constants,  <conio.h>  must  be
  1330.                     included.
  1331.  
  1332.           ■ Return  None
  1333.  
  1334.           ■ Example desktop->settextmode (C80) ;
  1335.  
  1336.  
  1337.           TDESKTOP::SETDESKCOLORS
  1338.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1339.  
  1340.           ■ Summary Sets  the colors in which {open} or {refresh} will draw
  1341.                     the desktop.
  1342.  
  1343.           ■ Syntax  #include "tdesktop.hpp"
  1344.                     void setdeskcolors (int back, int fore) ;
  1345.  
  1346.           ■ Remarks This has no effect on the current colors.  It will only
  1347.                     be  used when {open} or {refresh} will be called.  This
  1348.                     call  is optional.   If  {setdeskcolors} is  not called
  1349.                     before  a call to {open}, BLUE on LIGHTGRAY is assumed.
  1350.                     See  appendix B for  a list of  available colors, color
  1351.                     codes and symbolic constants.
  1352.  
  1353.           ■ Return  None
  1354.  
  1355.           ■ Example desktop->setdeskcolors (RED,LIGHTGRAY) ;
  1356.  
  1357.  
  1358.  
  1359.  
  1360.           EasyVision 1.0           User's Guide                     Page 24
  1361.  
  1362.  
  1363.  
  1364.  
  1365.           TDESKTOP::SETTEXTURE
  1366.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1367.  
  1368.           ■ Summary Sets  the character with which {open} or {refresh} will
  1369.                     draw the desktop.
  1370.  
  1371.           ■ Syntax  #include "tdesktop.hpp"
  1372.                     void settexture (char asciicode) ;
  1373.  
  1374.           ■ Remarks You  must  provide  the  character  used  to  draw  the
  1375.                     desktop,  in the  form of its  ASCII code.   Only ASCII
  1376.                     code  greater or equal to 32 are accepted.  This has no
  1377.                     effect  on the  current screen.   It will  only be used
  1378.                     when  {open} or {refresh} will be called.  This call is
  1379.                     optional.   If {settexture} is not called before a call
  1380.                     to {open}, '░' is assumed.
  1381.  
  1382.           ■ Return  None
  1383.  
  1384.           ■ Example desktop->settexture (' ') ;            // Plain desktop
  1385.  
  1386.  
  1387.           TDESKTOP::SETTITLE
  1388.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1389.  
  1390.           ■ Summary Sets  the title, and title colors displayed at the very
  1391.                     top line of the desktop.
  1392.  
  1393.           ■ Syntax  #include "tdesktop.hpp"
  1394.                     void settitle (char huge *text[, int back, int fore]) ;
  1395.  
  1396.           ■ Remarks The colors for the title are optional.  If they are not
  1397.                     provided,  the desktop's colors will  be used.  This is
  1398.                     used only if you do not intend to have a menubar, or if
  1399.                     you will have something displayed before the menubar is
  1400.                     created.   This has  no effect on  the current desktop.
  1401.                     It  will only be used when  {open} or {refresh} will be
  1402.                     called.   This call is optional.   If {settitle} is not
  1403.                     called  before  a  call  to {open},  no  title  will be
  1404.                     displayed.  To reset a previously defined title, use ""
  1405.                     as  argument.  You  can give a  <text> pointer argument
  1406.                     that  points to a text of any length, but only the part
  1407.                     of  the title  that will  fit on  the titlebar  will be
  1408.                     displayed.   So  don't worry  about the  length of your
  1409.                     title...
  1410.  
  1411.           ■ Return  None
  1412.  
  1413.           ■ Example desktop->settitle ("EasyVision 1.0",RED,BLACK) ;
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.           EasyVision 1.0           User's Guide                     Page 25
  1420.  
  1421.  
  1422.  
  1423.  
  1424.           TDESKTOP::OPEN
  1425.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1426.  
  1427.           ■ Summary Opens the desktop.
  1428.  
  1429.           ■ Syntax  #include "tdesktop.hpp"
  1430.                     void open () ;
  1431.  
  1432.           ■ Remarks This  will  save  the  screen  before  the  program was
  1433.                     started,  initialise the video  screen and then display
  1434.                     the  desktop according to the  default values, or those
  1435.                     set  by  the  previous  functions.   This  call  is NOT
  1436.                     optional.    You  cannot  'reopen'  an  already  opened
  1437.                     desktop.   You must use the {refresh} function for that
  1438.                     action, or first close it.
  1439.  
  1440.                     If  the  desktop as  been closed,  it  can then  be re-
  1441.                     opened.  This could be done for instance if you were to
  1442.                     shell to DOS or to another program.
  1443.  
  1444.           ■ Return  None
  1445.  
  1446.           ■ Example desktop->open () ;
  1447.  
  1448.  
  1449.           TDESKTOP::CLOSE
  1450.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1451.  
  1452.           ■ Summary Closes the Desktop.
  1453.  
  1454.           ■ Syntax  #include "tdesktop.hpp"
  1455.                     void close () ;
  1456.  
  1457.           ■  Remarks This will  restore the video screen  as it were before
  1458.                     the  desktop was  opened.   This call  is NOT optional.
  1459.                     You  must first {close} the  desktop with this function
  1460.                     if you want to re-open it.
  1461.  
  1462.                     {close}  does not  reset any  of the  desktop settings.
  1463.                     You  can easily  re-open it  after a  shell to  DOS for
  1464.                     example.
  1465.  
  1466.           ■ Return  None
  1467.  
  1468.           ■ Example desktop->close () ;
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.           EasyVision 1.0           User's Guide                     Page 26
  1479.  
  1480.  
  1481.  
  1482.  
  1483.           TDESKTOP::INSERT
  1484.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1485.  
  1486.           ■ Summary Insert  a {tstatusline}  or {tmenubar}  object into the
  1487.                     desktop.
  1488.  
  1489.           ■ Syntax  #include "tdesktop.hpp"
  1490.                     void insert (tstatusline huge *sl) ;
  1491.                     void insert (tmenubar huge *mb) ;
  1492.  
  1493.           ■  Remarks The desktop has a  {refresh} function that will redraw
  1494.                     the screen.  Initialy, it will only redraw the desktop.
  1495.                     If  you want it to be able to redraw the statusline and
  1496.                     menubar, you must {insert} them into the desktop.
  1497.  
  1498.                     This function is overloaded.  You use the same function
  1499.                     to insert the statusline or the menubar.
  1500.  
  1501.                -->  You cannot insert more than one object of the same type
  1502.                     in the desktop, or the previous one will be lost.
  1503.  
  1504.           ■ Return  None
  1505.  
  1506.           ■ Example desktop->insert (statusline) ;
  1507.  
  1508.  
  1509.           DESKTOP::REFRESH
  1510.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1511.  
  1512.           ■ Summary The  desktop has a {refresh}  function that will redraw
  1513.                     the screen.  Using this function can be DANGEROUS...
  1514.  
  1515.           ■ Syntax  #include "tdesktop.hpp"
  1516.                     void refresh () ;
  1517.  
  1518.           ■  Remarks If you want it to be able to redraw the statusline and
  1519.                     menubar, you must first {insert} them into the desktop.
  1520.  
  1521.                -->  The  refresh function  will use the  current values for
  1522.                     colors,  texture, etc...   not  the values  when it was
  1523.                     opened.   This  means that  you can  change the desktop
  1524.                     colors for instance, and then {refresh} it.
  1525.  
  1526.                -->  IN  EASYVISION 1.0,  WINDOWS CANNOT BE  REFRESHED.  YOU
  1527.                     MUST  MAKE ABSOLUTELY CERTAIN THAT THIS FUNCTION CANNOT
  1528.                     BE  CALLED WHEN WINDOWS  ARE OPENED, OR  YOU WILL BE IN
  1529.                     BIG TROUBLE.
  1530.  
  1531.           ■ Return  None
  1532.  
  1533.           ■ Example desktop->refresh () ;
  1534.  
  1535.  
  1536.  
  1537.           EasyVision 1.0           User's Guide                     Page 27
  1538.  
  1539.  
  1540.  
  1541.  
  1542.           █████████████████████████████████████████████████████████████████
  1543.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1544.           C  H  A  P  T  E  R     6          EasyVision's TSTATUSLINE class
  1545.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1546.  
  1547.           The  {tstatusline} class  provides a  standard statusline  on the
  1548.           last  line of the screen.   It is divided  into 2 areas, each one
  1549.           completely independent.
  1550.  
  1551.           The left area is 10 spaces wide, including the dividing character
  1552.           '|'.   You have 8 spaces to display  a message in this area.  The
  1553.           suggested  message for this area is  '~F1~ Help'.  The right area
  1554.           occupies the remainder of the line.
  1555.  
  1556.           The  {tstatusline}  class  as  built  in  default  values.    The
  1557.           statusline  will autosize itself to the  screen.  However, if you
  1558.           would  like to  change those  default beheviors,  other functions
  1559.           will allow you to do so.
  1560.  
  1561.           The {tstatusline} class can be used alone by itself.  That is, it
  1562.           can be the only class you will use in your application.
  1563.  
  1564.           On  the following pages, you will  find each of the tstatusline's
  1565.           member functions.
  1566.  
  1567.           Examples of instantiating a {tstatusline} object are given in the
  1568.           source code of the EasyVision's demo program (DEMO.CPP).
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.           EasyVision 1.0           User's Guide                     Page 28
  1597.  
  1598.  
  1599.  
  1600.  
  1601.           TSTATUSLINE::SETLEFTCOLORS
  1602.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1603.  
  1604.           ■ Summary Sets  the background,  foreground and  highlight colors
  1605.                     used by the {displayleft} function, when writing to the
  1606.                     left statusline.
  1607.  
  1608.           ■ Syntax  #include "tstatusline.hpp"
  1609.                     void setleftcolors (int back[, int fore, int high]) ;
  1610.  
  1611.           ■ Remarks <fore>  and  <high>  are  optional.   If  they  are not
  1612.                     provided,  <fore> defaults to BLACK, and <high> to RED.
  1613.                     You  can  use color  macros  if <conio.h>  is included.
  1614.                     Appendix  B gives a descrition of available color codes
  1615.                     and macros.
  1616.  
  1617.           ■ Return  None
  1618.  
  1619.           ■ Example statusline->setleftcolors (LIGHTGRAY,BLACK,RED) ;
  1620.  
  1621.  
  1622.           TSTATUSLINE::SETRIGHTCOLORS
  1623.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1624.  
  1625.           ■ Summary Sets  the background,  foreground and  highlight colors
  1626.                     used  by the  {displayright} function,  when writing to
  1627.                     the right statusline.
  1628.  
  1629.           ■ Syntax  #include "tstatusline.hpp"
  1630.                     void setrightcolors (int back[, int fore, int high]) ;
  1631.  
  1632.           ■ Remarks <fore>  and  <high>  are  optional.   If  they  are not
  1633.                     provided,  <fore> defaults to BLACK, and <high> to RED.
  1634.                     You  can  use color  macros  if <conio.h>  is included.
  1635.                     Appendix  B gives a descrition of available color codes
  1636.                     and macros.
  1637.  
  1638.           ■ Return  None
  1639.  
  1640.           ■ Example statusline->setrightcolors (LIGHTGRAY,BLACK,RED) ;
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.           EasyVision 1.0           User's Guide                     Page 29
  1656.  
  1657.  
  1658.  
  1659.  
  1660.           TSTATUSLINE::DISPLAYLEFT
  1661.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1662.  
  1663.           ■ Summary Displays a message on the statusline, in the left area.
  1664.  
  1665.           ■ Syntax  #include "tstatusline.hpp"
  1666.                     void displayleft ([char huge *text]) ;
  1667.  
  1668.           ■ Remarks The  <text> argument can point to  a msg of any length,
  1669.                     including  the '~' characters.   If the  message is too
  1670.                     long  to fit in  the area, only  the first 8 characters
  1671.                     will  be  displayed.   There is  no  need to  clear the
  1672.                     statusline  before using this function.  You can toggle
  1673.                     between  normal  foreground  statusline  color  and the
  1674.                     highlight color with the special character '~' (tilde).
  1675.                     To  clear the  statusline, call  this function  with no
  1676.                     parameter.
  1677.  
  1678.           ■ Return  None
  1679.  
  1680.           ■ Example statusline->displayleft ("~F1~ Help") ; // Display text
  1681.                     statusline->displayleft () ;   // Clear left statusline
  1682.  
  1683.  
  1684.           TSTATUSLINE::DISPLAYRIGHT
  1685.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1686.  
  1687.           ■ Summary Displays  a  message on  the  statusline, in  the right
  1688.                     area.
  1689.  
  1690.           ■ Syntax  #include "tstatusline.hpp"
  1691.                     void displayright ([char huge *text]) ;
  1692.  
  1693.           ■ Remarks The  <text> argument can point to  a msg of any length,
  1694.                     including  the '~' characters.   If the  message is too
  1695.                     long   to  fit  in  the  area,  only  the  first  'n-2'
  1696.                     characters  will be displayed,  assuming the right area
  1697.                     is  n characters wide.   There is no  need to clear the
  1698.                     statusline  before using this function.  You can toggle
  1699.                     between  normal  foreground  statusline  color  and the
  1700.                     highlight color with the special character '~' (tilde).
  1701.                     To  clear the  statusline, call  this function  with no
  1702.                     parameter.
  1703.  
  1704.           ■ Return  None
  1705.  
  1706.           ■ Example statusline->displayright ("This is ~EasyVision~ !") ;
  1707.                     statusline->displayright () ;       // Clear right area
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.           EasyVision 1.0           User's Guide                     Page 30
  1715.  
  1716.  
  1717.  
  1718.  
  1719.           TSTATUSLINE::REFRESH
  1720.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1721.  
  1722.           ■ Summary The  statusline  object has  a {refresh}  function that
  1723.                     will redraw it on the screen.
  1724.  
  1725.           ■ Syntax  #include "tstatusline.hpp"
  1726.                     void refresh () ;
  1727.  
  1728.           ■  Remarks It will  redraw the statusline  and redisplay the last
  1729.                     message.
  1730.  
  1731.                -->  The  refresh function  will use the  current values for
  1732.                     colors.   This means that you can change the statusline
  1733.                     colors and then, {refresh} it with the new colors.
  1734.  
  1735.           ■ Return  None
  1736.  
  1737.           ■ Example statusline->refresh () ;
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.           EasyVision 1.0           User's Guide                     Page 31
  1774.  
  1775.  
  1776.  
  1777.  
  1778.           █████████████████████████████████████████████████████████████████
  1779.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  1780.           C  H  A  P  T  E  R     7             EasyVision's TMENUBAR class
  1781.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1782.  
  1783.           The  {tmenubar} class provides a menubar on the first line of the
  1784.           screen,  with pull down menus and scrolling selection cursor.  It
  1785.           also  activates an interrupt driven clock displayed at the end of
  1786.           the menubar.
  1787.  
  1788.           A menubar acts as a filter.  You make the user inputs go 'trough'
  1789.           the  menubar.    If the  input  is  the F10  key,  or  an ALT-key
  1790.           corresponding  to a  menu hotkey, the  menubar is  activated.  If
  1791.           not, the input returns unchanged.
  1792.  
  1793.           Items  created in the menus are assigned return values.  When the
  1794.           user  selects an item, his input  is changed to this return value
  1795.           and returned from the menubar.
  1796.  
  1797.           The  {tmenubar} class  as built in  default values.   The menubar
  1798.           will  autosize itself to the screen.   However, if you would like
  1799.           to change those default beheviors, functions will allow you to do
  1800.           so.
  1801.  
  1802.           The  {tmenubar} class can be  used alone by itself.   That is, it
  1803.           can be the only class you will use in your application.
  1804.  
  1805.           YOU  SHOULD  NEVER INSTANTIATE  MORE THAN  ONE MENUBAR.   RESULTS
  1806.           COULD BE DANGEROUS.
  1807.  
  1808.           On the following pages, you will find each of {tmenubar}'s member
  1809.           functions.
  1810.  
  1811.           Examples of instantiating and using a {tmenubar} object are given
  1812.           in the source code of the EasyVision's demo program (DEMO.CPP).
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.           EasyVision 1.0           User's Guide                     Page 32
  1833.  
  1834.  
  1835.  
  1836.  
  1837.           TMENUBAR::SETCOLORS
  1838.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1839.  
  1840.           ■ Summary Sets  the background, foreground, highlight, cursor and
  1841.                     clock colors used by the {tmenubar} object.
  1842.  
  1843.           ■ Syntax  #include "tmenubar.hpp"
  1844.                     void  setcolors  ([int back,  int  fore, int  high, int
  1845.                     cursor, int clockback, int clockfore]) ;
  1846.  
  1847.           ■ Remarks All  arguments are optional.  If they are not provided,
  1848.                     they will default to the following values:
  1849.  
  1850.                     back = LIGHTGRAY
  1851.                     fore = BLACK
  1852.                     high = RED
  1853.                     cursor = GREEN
  1854.                     clockback = RED
  1855.                     clockfore = WHITE
  1856.  
  1857.                     You  can  use color  macros  if <conio.h>  is included.
  1858.                     Appendix  B gives a descrition of available color codes
  1859.                     and macros.
  1860.  
  1861.                     If  you  don't  make  a  call  to  this  function,  the
  1862.                     previously mentioned default values are assumed.
  1863.  
  1864.                -->  When  a menu has been created, it is thereafter illegal
  1865.                     to change the allready selected colors.
  1866.  
  1867.           ■ Return  None
  1868.  
  1869.           ■ Example menubar->setcolors (BLUE,WHITE,RED,MAGENTA) ;
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.           EasyVision 1.0           User's Guide                     Page 33
  1892.  
  1893.  
  1894.  
  1895.  
  1896.           TMENUBAR::SETHELP
  1897.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1898.  
  1899.           ■ Summary Sets  the  pointer  to  some  help  text  that  will be
  1900.                     displayed when F1 is pressed while in the menubar.
  1901.  
  1902.           ■ Syntax  #include "tmenubar.hpp"
  1903.                     void sethelp (char huge *helptext) ;
  1904.  
  1905.           ■ Remarks The  help  text  format is  explained  in  the {getkey}
  1906.                     function description.
  1907.  
  1908.           ■ Return  None
  1909.  
  1910.           ■ Example menubar->sethelp (menuhelp) ;
  1911.  
  1912.  
  1913.           TMENUBAR::SETSLPTR
  1914.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1915.  
  1916.           ■ Summary Sets the pointer to the statusline.
  1917.  
  1918.           ■ Syntax  #include "tmenubar.hpp"
  1919.                     void setslptr (tstatusline huge *slptr) ;
  1920.  
  1921.           ■ Remarks When you create menus and menu items, you can optionaly
  1922.                     give  them a short help text  that will be displayed on
  1923.                     the  statusline when the  menu cursor is  on them.  You
  1924.                     therefore  need  to  tell  the  menubar  where  is  the
  1925.                     statusline  object.  This is optional.  If this pointer
  1926.                     is  not  set, the  statusline  help texts  will  not be
  1927.                     displayed.
  1928.  
  1929.           ■ Return  None
  1930.  
  1931.           ■ Example menubar->setslptr (statusline) ;
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.           EasyVision 1.0           User's Guide                     Page 34
  1951.  
  1952.  
  1953.  
  1954.  
  1955.           TMENUBAR::ADDMENU
  1956.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  1957.  
  1958.           ■ Summary Adds a menu on the menubar.
  1959.  
  1960.           ■ Syntax  #include "tmenubar.hpp"
  1961.                     void  addmenu (char huge *name,  int hotkey[, char huge
  1962.                     *sltext]) ;
  1963.  
  1964.           ■ Remarks <name>  : It  can be of any length, but must fit on the
  1965.                               menubar.    The  first  2  characters  of the
  1966.                               menubar  are left blank, and the 10 lasts are
  1967.                               reserved  for  the menubar  clock.   2 spaces
  1968.                               will be inserted between each menu.
  1969.  
  1970.                     <hotkey>: It  must be a letter (A-Z), case insensitive.
  1971.                               If the letter is present in the menu name, it
  1972.                               will be highlighted.
  1973.  
  1974.                     <sltext>: This  is  a  short  help  text  that  will be
  1975.                               displayed on the statusline when this menu is
  1976.                               selected.     It   can  be   of  any  length.
  1977.                               {setslptr} must have been previously called.
  1978.  
  1979.           ■ Return  None
  1980.  
  1981.           ■ Example menubar->addmenu ("Files",'F',"Create, open files") ;
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.           EasyVision 1.0           User's Guide                     Page 35
  2010.  
  2011.  
  2012.  
  2013.  
  2014.           TMENUBAR::ADDITEM
  2015.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2016.  
  2017.           ■ Summary Adds an item in the last created menu.
  2018.  
  2019.           ■ Syntax  #include "tmenubar.hpp"
  2020.                     void   additem  ([char  huge  *text,  int  hotkey,  int
  2021.                     returnval, char huge *sltext]) ;
  2022.  
  2023.           ■ Remarks <text>  : This  is  the  text displayed  for  this menu
  2024.                               entry.   It can  be of any  length.  The menu
  2025.                               will autosize itself to accomadate the widest
  2026.                               item.
  2027.  
  2028.                     <hotkey>: It  must be a letter (A-Z), case insensitive.
  2029.                               If the letter is present in the item text, it
  2030.                               will be highlighted.
  2031.  
  2032.                     <returnval>:  If this item is  selected, the user input
  2033.                               will be change to this value.
  2034.  
  2035.                     <sltext>: This  is  a  short  help  text  that  will be
  2036.                               displayed on the statusline when this item is
  2037.                               selected.     It   can  be   of  any  length.
  2038.                               {setslptr} must have been previously called.
  2039.  
  2040.                -->  If  {additem}  is  called with  no  arguments,  it will
  2041.                     insert a separator in the menu.
  2042.  
  2043.           ■ Return  None
  2044.  
  2045.           ■ Example menubar->additem ("Open  F3",'O',317,"Open file") ;
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.           EasyVision 1.0           User's Guide                     Page 36
  2069.  
  2070.  
  2071.  
  2072.  
  2073.           TMENUBAR::TROUGH
  2074.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2075.  
  2076.           ■ Summary Makes an input go trough the menubar.
  2077.  
  2078.           ■ Syntax  #include "tmenubar.hpp"
  2079.                     int trough (int key) ;
  2080.  
  2081.           ■ Remarks If <key> is F10, the menubar is activated, but no menus
  2082.                     are  opened.  If  <key> is a menu  hotkey, this menu is
  2083.                     opened.
  2084.  
  2085.           ■ Return  If  <key> is not F10 or a menu hotkey, {trough} returns
  2086.                     <key>  unchanged.  If the menubar is activated, then if
  2087.                     the   user  enters   ESC,  {trough}   returns  with  0.
  2088.                     Otherwise  it returns with the return value of the menu
  2089.                     item selected.
  2090.  
  2091.           ■ Example int inchar ;
  2092.                     inchar = menubar->trough (getkey (0)) ;
  2093.  
  2094.  
  2095.           TMENUBAR::ITEMSETAVAIL
  2096.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2097.  
  2098.           ■ Summary Sets availability of a menu item to TRUE or FALSE.
  2099.  
  2100.           ■ Syntax  #include "tmenubar.hpp"
  2101.                     void  itemsetavail (int menuhotkey, int itemhotkey, int
  2102.                     state) ;
  2103.  
  2104.           ■ Remarks You  must provide the <menuhotkey> of the menu in which
  2105.                     the  item  exist,  and  the  <itemhotkey>  of  the item
  2106.                     itself.    Setting a  menu item  to  TRUE will  make it
  2107.                     available, to FALSE not available.
  2108.  
  2109.                -->  When  a  menu  item  is  created,  it  is  available by
  2110.                     default.
  2111.  
  2112.           ■ Return  None
  2113.  
  2114.           ■ Example menubar->itemsetavail ('F','O',FALSE) ;
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.           EasyVision 1.0           User's Guide                     Page 37
  2128.  
  2129.  
  2130.  
  2131.  
  2132.           TMENUBAR::REFRESH
  2133.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2134.  
  2135.           ■ Summary The  menubar object has a  {refresh} function that will
  2136.                     redraw it on the screen.
  2137.  
  2138.           ■ Syntax  #include "tmenubar.hpp"
  2139.                     void refresh () ;
  2140.  
  2141.           ■ Remarks None
  2142.  
  2143.           ■ Return  None
  2144.  
  2145.           ■ Example menubar->refresh () ;
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.           EasyVision 1.0           User's Guide                     Page 38
  2187.  
  2188.  
  2189.  
  2190.  
  2191.           █████████████████████████████████████████████████████████████████
  2192.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2193.           C  H  A  P  T  E  R     8              EasyVision's TWINDOW class
  2194.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2195.  
  2196.           The  {twindow} class  provides powerful window  functions to your
  2197.           programs.     A  window  is   where  all  your  program's  screen
  2198.           inputs/outputs will take place.
  2199.  
  2200.           The {twindow} class comes with many member functions.  They allow
  2201.           for  manipulating the window position, size and attributes.  Text
  2202.           can  be easily written to the window.  Input fields will give you
  2203.           formatted  and secured  user inputs.   Push  buttons will provide
  2204.           options selection.  All this and many more features.
  2205.  
  2206.           The  {twindow} class as built in default values.  However, if you
  2207.           would  like  to change  those  default beheviors,  functions will
  2208.           allow you to do so.
  2209.  
  2210.           The {twindow} class can be used alone by itself.  That is, it can
  2211.           be the only class you will use in your application.
  2212.  
  2213.                -->  You can open simultanously as many windows as you like.
  2214.                     When  you open a window, what  was under it is saved to
  2215.                     be restored when you'll close it.
  2216.  
  2217.                -->  EasyVision  doesn't  keep  track  of  the  way  windows
  2218.                     overlap.   It doesn't know if a window is over or under
  2219.                     another one. Therefore, you should NEVER close a window
  2220.                     if  another window covers part of it.  Always close the
  2221.                     ones that are in the foreground first.
  2222.  
  2223.                -->  You must NEVER work with a window that is under another
  2224.                     one.   If you do so,  the integrity of the desktop will
  2225.                     be compromised.
  2226.  
  2227.           On  the following pages, you will find each of {twindow}'s member
  2228.           functions.
  2229.  
  2230.           Examples  of instantiating and using a {twindow} object are given
  2231.           in the source code of the EasyVision's demo program (DEMO.CPP).
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.           EasyVision 1.0           User's Guide                     Page 39
  2246.  
  2247.  
  2248.  
  2249.  
  2250.           TWINDOW::WINGETSCREENHEIGHT
  2251.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2252.  
  2253.           ■ Summary Returns the video screen height in lines.
  2254.  
  2255.           ■ Syntax  #include "twindow.hpp"
  2256.                     int wingetscreenheight () ;
  2257.  
  2258.           ■ Remarks This could be needed if you wanted to center a window.
  2259.  
  2260.           ■ Return  An 'int', the height of the screen.
  2261.  
  2262.           ■ Example lines = window->wingetscreenheight () ;
  2263.  
  2264.  
  2265.           TWINDOW::WINGETSCREENWIDTH
  2266.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2267.  
  2268.           ■ Summary Returns the video screen width in columns.
  2269.  
  2270.           ■ Syntax  #include "twindow.hpp"
  2271.                     int wingetscreenwidth () ;
  2272.  
  2273.           ■ Remarks This could be needed if you wanted to center a window.
  2274.  
  2275.           ■ Return  An 'int', the width of the screen.
  2276.  
  2277.           ■ Example Cols = window->wingetscreenwidth () ;
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.           EasyVision 1.0           User's Guide                     Page 40
  2305.  
  2306.  
  2307.  
  2308.  
  2309.           TWINDOW::WINSETPOS
  2310.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2311.  
  2312.           ■ Summary Sets the position of the window on the desktop.
  2313.  
  2314.           ■ Syntax  #include "twindow.hpp"
  2315.                     void winsetpos (int row, int col) ;
  2316.  
  2317.           ■ Remarks <row> and <col> are the topleft corner of the window TO
  2318.                     BE OPENED.  The first and last lines of the desktop are
  2319.                     reserved  for the menubar and  statusline and you can't
  2320.                     have  part of  the window  off the  screen.  Therefore,
  2321.                     this  function will validate all coordinates and change
  2322.                     them to get a valide window position.
  2323.  
  2324.                -->  If  you set the  size of the  window before setting its
  2325.                     position,  this  size  will be  taken  into  account to
  2326.                     calculate  the  valide  range of  the  <row>  and <col>
  2327.                     arguments.
  2328.  
  2329.                -->  You  CANNOT use this function  once the window has been
  2330.                     opened.  Use the {winmove} function instead.
  2331.  
  2332.           ■ Return  None
  2333.  
  2334.           ■ Example window->winsetpos (10,12) ;  // Topleft corner at 10,12
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.           EasyVision 1.0           User's Guide                     Page 41
  2364.  
  2365.  
  2366.  
  2367.  
  2368.           TWINDOW::WINGETROW
  2369.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2370.  
  2371.           ■ Summary Returns the window row position of its topleft corner.
  2372.  
  2373.           ■ Syntax  #include "twindow.hpp"
  2374.                     int wingetrow () ;
  2375.  
  2376.           ■ Remarks The top left corner of the screen is (1,1).
  2377.  
  2378.           ■ Return  Row position of window.
  2379.  
  2380.           ■ Example row = window->wingetrow () ;
  2381.  
  2382.  
  2383.           TWINDOW::WINGETCOL
  2384.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2385.  
  2386.           ■ Summary Returns the window column position, topleft corner.
  2387.  
  2388.           ■ Syntax  #include "twindow.hpp"
  2389.                     int wingetcol () ;
  2390.  
  2391.           ■ Remarks The top left corner of the screen is (1,1).
  2392.  
  2393.           ■ Return  Column position of window.
  2394.  
  2395.           ■ Example col = window->wingetcol () ;
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.           EasyVision 1.0           User's Guide                     Page 42
  2423.  
  2424.  
  2425.  
  2426.  
  2427.           TWINDOW::WINSETSIZE
  2428.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2429.  
  2430.           ■ Summary Sets the size of the window.
  2431.  
  2432.           ■ Syntax  #include "twindow.hpp"
  2433.                     void winsetsize (int height, int width) ;
  2434.  
  2435.           ■  Remarks <height> and <width> represent the size of the window,
  2436.                     frames  included.   The  first  and last  lines  of the
  2437.                     desktop  are reserved  for the  menubar and statusline.
  2438.                     Also, you can't have part of the window off the screen.
  2439.                     Therefore,  this function will  validate the asked size
  2440.                     and change it to get a valide window size.
  2441.  
  2442.                -->  You CANNOT change the size of a window once it has been
  2443.                     opened.
  2444.  
  2445.           ■ Return  None
  2446.  
  2447.           ■ Example window->winsetsize (10,60) ;      // 10 rows by 60 cols
  2448.  
  2449.  
  2450.           TWINDOW::WINGETHEIGHT
  2451.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2452.  
  2453.           ■ Summary Returns the window's height in lines.
  2454.  
  2455.           ■ Syntax  #include "twindow.hpp"
  2456.                     int wingetheight () ;
  2457.  
  2458.           ■ Remarks The top and bottom frames are included in the height.
  2459.  
  2460.           ■ Return  An 'int', the height of the window.
  2461.  
  2462.           ■ Example heigth = window->wingetheight () ;
  2463.  
  2464.  
  2465.           TWINDOW::WINGETWIDTH
  2466.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2467.  
  2468.           ■ Summary Returns the window's width in columns.
  2469.  
  2470.           ■ Syntax  #include "twindow.hpp"
  2471.                     int wingetwidth () ;
  2472.  
  2473.           ■ Remarks The left and right frames are included in the width.
  2474.  
  2475.           ■ Return  An 'int', the width of the window.
  2476.  
  2477.           ■ Example width = window->wingetwidth () ;
  2478.  
  2479.  
  2480.  
  2481.           EasyVision 1.0           User's Guide                     Page 43
  2482.  
  2483.  
  2484.  
  2485.  
  2486.           TWINDOW::WINSETCOLORS
  2487.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2488.  
  2489.           ■ Summary Sets the background and foreground colors of a window.
  2490.  
  2491.           ■ Syntax  #include "twindow.hpp"
  2492.                     void winsetcolors ([int back, int fore]) ;
  2493.  
  2494.           ■  Remarks These are the  colors used to draw  the window.  Those
  2495.                     colors  will be used by  other functions when the color
  2496.                     arguments   are  optional.     <back>  and  <fore>  are
  2497.                     optional,  and  will  default  to  LIGHTGRAY  and WHITE
  2498.                     respectively.
  2499.  
  2500.                -->  You  CANNOT change the default  colors of a window once
  2501.                     it has been opened.
  2502.  
  2503.           ■ Return  None
  2504.  
  2505.           ■ Example window->winsetcolors (BLUE,WHITE) ;
  2506.  
  2507.  
  2508.           TWINDOW::WINSETTITLE
  2509.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2510.  
  2511.           ■ Summary Sets the title displayed on the top frame of a window.
  2512.  
  2513.           ■ Syntax  #include "twindow.hpp"
  2514.                     void winsettitle (char huge *title) ;
  2515.  
  2516.           ■  Remarks <title> can point  to a title of  any length, and only
  2517.                     the  portion that  will fit  on the  top frame  will be
  2518.                     displayed.   If you don't give a title before opening a
  2519.                     window, no title will be displayed.
  2520.  
  2521.                -->  You CANNOT set a title after a window has been opened.
  2522.  
  2523.           ■ Return  None
  2524.  
  2525.           ■ Example window->winsettitle ("User's file") ;
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.           EasyVision 1.0           User's Guide                     Page 44
  2541.  
  2542.  
  2543.  
  2544.  
  2545.           TWINDOW::WINSETHELP
  2546.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2547.  
  2548.           ■ Summary Sets a pointer to some context sensitive help text that
  2549.                     will  be displayed if the F1  help key is pressed while
  2550.                     in this window.
  2551.  
  2552.           ■ Syntax  #include "twindow.hpp"
  2553.                     void winsethelp (char huge *ptrtohelp) ;
  2554.  
  2555.           ■  Remarks  The  format of  the  help  text is  described  in the
  2556.                     {getkey} function.
  2557.  
  2558.           ■ Return  None
  2559.  
  2560.           ■ Example window->winsethelp (inputhelp) ;
  2561.  
  2562.  
  2563.           TWINDOW::WINSETSLPTR
  2564.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2565.  
  2566.           ■ Summary Sets a pointer to an instantiated {tstatusline} object.
  2567.  
  2568.           ■ Syntax  #include "twindow.hpp"
  2569.                     void winsetslptr (tstatusline huge *slptr) ;
  2570.  
  2571.           ■  Remarks Input fields  and buttons in  a window can  be given a
  2572.                     short   help  text  that  will   be  displayed  on  the
  2573.                     statusline  when  they are  selected.   To  enable this
  2574.                     function,  you  must  give  the window  a  ptr  to your
  2575.                     statusline.
  2576.  
  2577.           ■ Return  None
  2578.  
  2579.           ■ Example window->winsetslptr (statusline) ;
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.  
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.           EasyVision 1.0           User's Guide                     Page 45
  2600.  
  2601.  
  2602.  
  2603.  
  2604.           TWINDOW::WINOPEN
  2605.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2606.  
  2607.           ■ Summary Opens a window.
  2608.  
  2609.           ■ Syntax  #include "twindow.hpp"
  2610.                     void winopen () ;
  2611.  
  2612.           ■  Remarks The window  is opened with  default attributes, or the
  2613.                     ones set by the previous functions.  You CANNOT open an
  2614.                     already opened window.
  2615.  
  2616.                     Default attributes for a window are:
  2617.  
  2618.                     Position is (row=2, col=1).
  2619.                     Size is (height=3, width=6).
  2620.                     Colors are WHITE on LIGHTGRAY.
  2621.                     The cursor is on line 1.
  2622.  
  2623.           ■ Return  None
  2624.  
  2625.           ■ Example window->winopen () ;
  2626.  
  2627.  
  2628.           TWINDOW::WINCLOSE
  2629.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2630.  
  2631.           ■ Summary Closes a window.
  2632.  
  2633.           ■ Syntax  #include "twindow.hpp"
  2634.                     void winclose () ;
  2635.  
  2636.           ■  Remarks You CANNOT  close an already closed  window.  When you
  2637.                     close  a window, all its  attributes are reset to their
  2638.                     default values as if you had just declared this object.
  2639.                     Your  previous settings like size  and colors aren't in
  2640.                     effect anymore.
  2641.  
  2642.                     All  memory taken by the window  is released.  What was
  2643.                     under this window when it was opened is restored.
  2644.  
  2645.                -->  You should NEVER close a window that has part of itself
  2646.                     hidden  under another window.  Always close the ones in
  2647.                     the  foreground first.   This is  your responsability !
  2648.                     EasyVision  doesn't know your window layer position and
  2649.                     won't tell you if something goes wrong.
  2650.  
  2651.           ■ Return  None
  2652.  
  2653.           ■ Example window->winclose () ;
  2654.  
  2655.  
  2656.  
  2657.  
  2658.           EasyVision 1.0           User's Guide                     Page 46
  2659.  
  2660.  
  2661.  
  2662.  
  2663.           TWINDOW::WINCLEAR
  2664.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2665.  
  2666.           ■ Summary Clears part or all the window content.
  2667.  
  2668.           ■ Syntax  #include "twindow.hpp"
  2669.                     void  winclear  ([int  left, int  top,  int  right, int
  2670.                     bottom]) ;
  2671.  
  2672.           ■  Remarks The window must be opened  to call this function.  All
  2673.                     arguments  are validated  and if  incorrect, changed to
  2674.                     fall within valide window coordinates.
  2675.  
  2676.                     All arguments are optional, and will default to:
  2677.  
  2678.                     left = 1 , top = 1,
  2679.                     right = rightmost column, bottom = bottom line.
  2680.  
  2681.                     So,  calling this function with no arguments will clear
  2682.                     the entire window.
  2683.  
  2684.                -->  Beware  that this function will also clear static text,
  2685.                     buttons  and input fields,  BUT NOT REMOVE  THEM.  This
  2686.                     will make them invisible, until you use them again.  It
  2687.                     is  your responsability  to make  sure you  don't erase
  2688.                     them !
  2689.  
  2690.           ■ Return  None
  2691.  
  2692.           ■ Example window->winclear (1,1,999,3) ;  // Erases first 3 lines
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.           EasyVision 1.0           User's Guide                     Page 47
  2718.  
  2719.  
  2720.  
  2721.  
  2722.           TWINDOW::WINWRITE
  2723.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2724.  
  2725.           ■ Summary Writes text to the window.  Many options are available.
  2726.  
  2727.           ■ Syntax  #include "twindow.hpp"
  2728.                     void  winwrite (char huge *text[, int row, int col, int
  2729.                     format, int fore, int back]) ;
  2730.  
  2731.           ■  Remarks The  window must be  opened.  The  <text> argument can
  2732.                     point  to a  text string  of any  length, but  only the
  2733.                     first 132 characters will be considered.
  2734.  
  2735.           -->       This  function will only print on 1 line of the window.
  2736.                     If  the string is longer than an entire line, only what
  2737.                     will  fit will be printed.  NO LINE WRAPPING WILL OCCUR
  2738.                     with this function !
  2739.  
  2740.                     All arguments are optional, except for <text>.
  2741.  
  2742.                     <text>  : Pointer to the text to be printed.
  2743.  
  2744.                     <row>   : The  {winwrite} function  keeps track  of the
  2745.                               last   line  printed  to,  with  an  internal
  2746.                               cursor.  After each {winwrite}, the cursor is
  2747.                               positioned on the next line.
  2748.  
  2749.                               When  you use <row>, it  tells where the text
  2750.                               is  to be printed.   Row 1  is the first line
  2751.                               under the top frame.
  2752.  
  2753.                               This  argument  is optional.    If it  is not
  2754.                               given,  or  if  you  use  the  macro 'WSAME',
  2755.                               {winwrite}  will  use  it's  internal  cursor
  2756.                               position.  Text will be printed on the cursor
  2757.                               line,  and the  cursor will move  to the next
  2758.                               line.
  2759.  
  2760.                          -->  If  you  DON'T  give the  <row>  argument and
  2761.                               write to the last window line, all the window
  2762.                               will  be scrolled up  1 line.   YOU MUST MAKE
  2763.                               SURE  YOU DON'T HAVE ANY STATIC TEXT, BUTTONS
  2764.                               OR  INPUT FIELDS.   THEY WILL  BE SCROLLED UP
  2765.                               ALSO  AND THE WINDOW INTEGRITY WILL HAVE BEEN
  2766.                               COMPROMISED !
  2767.  
  2768.                          -->  If  you give the <row> argument, you can then
  2769.                               write  to the last line and no scrolling will
  2770.                               occur.   The  window cursor will  stay on the
  2771.                               last line.
  2772.  
  2773.  
  2774.  
  2775.  
  2776.           EasyVision 1.0           User's Guide                     Page 48
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.                     <col>   : Column  where text will start.  This argument
  2783.                               is  optional.  If it is  not given, or if you
  2784.                               use the macro 'WSAME', it will default to 1.
  2785.  
  2786.                     <format>: Determines how the text string is justify.
  2787.  
  2788.                               0: No justification.  <col> is used.
  2789.                               1: Left justified.  <col> has no effect.
  2790.                               2: Centered.  <col> has no effect.
  2791.                               3: Right justified.  <col> has no effect.
  2792.  
  2793.                               This  argument  is optional.    If it  is not
  2794.                               given, it will default to 0.
  2795.  
  2796.                     <fore>  : Foreground  color  used.    This  argument is
  2797.                               optional.   It it is not given, or if you use
  2798.                               the  macro  'WSAME', it  will default  to the
  2799.                               window foreground color.
  2800.  
  2801.                     <back>  : Background  color  used.    This  argument is
  2802.                               optional.   If it is not given, or if you use
  2803.                               the  macro  'WSAME', it  will default  to the
  2804.                               window background color.
  2805.  
  2806.           ■ Return  None
  2807.  
  2808.           ■ Example // Writes to current line, left justified, current
  2809.                     // window colors, and move cursor to next line
  2810.  
  2811.                     window->winwrite ("Hello") ;
  2812.  
  2813.                     // Writes to current line, centered, current window
  2814.                     // colors, and move cursor to next line.  Even if
  2815.                     // <col> is 1, it has no effect.
  2816.  
  2817.                     window->winwrite ("Hello",WSAME,1,2) ;
  2818.  
  2819.                     // Writes to specific line, specific column, specific
  2820.                     // colors
  2821.  
  2822.                     window->winwrite ("Hello",5,10,0,YELLOW,RED) ;
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.           EasyVision 1.0           User's Guide                     Page 49
  2836.  
  2837.  
  2838.  
  2839.  
  2840.           TWINDOW::WINSWRITE
  2841.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2842.  
  2843.           ■ Summary Writes  STATIC text  to the  window.   Many options are
  2844.                     available.
  2845.  
  2846.           ■ Syntax  #include "twindow.hpp"
  2847.                     void winswrite (char huge *text[, int row, int col, int
  2848.                     format, int fore, int back]) ;
  2849.  
  2850.           ■ Remarks All   comments  for  {winwrite}   are  still  true  for
  2851.                     {winswrite}.
  2852.  
  2853.                     Currently, the {twindow} class doesn't have a {refresh}
  2854.                     function   like   the  {tdesktop},   {tstatusline}  and
  2855.                     {tmenubar}  classes.  The {winswrite} function has been
  2856.                     implemented   to  make  possible   a  future  {refresh}
  2857.                     function.
  2858.  
  2859.                     The {winswrite} function acts exactly as the {winwrite}
  2860.                     function.   However,  all the calls  to {winswrite} are
  2861.                     saved  in a queue.   Later, when the {refresh} function
  2862.                     is implemented, all calls to {winswrite} will be remade
  2863.                     to redisplay those static texts.
  2864.  
  2865.                -->  All  calls to  this function  allocate memory,  and are
  2866.                     much  slower  than a  call  to the  regular {winwrite}.
  2867.                     {winswrite}  SHOULD ONLY BE USED for text that will not
  2868.                     be erased until the window is closed.  For instance, an
  2869.                     identifier   for   an  input   field,  or   some  other
  2870.                     identifications.
  2871.  
  2872.                -->  You  SOULD  NEVER USE  this function  if you  intend to
  2873.                     scroll the window or erase it.  Use it only if you want
  2874.                     your text to be available to the {refresh} function.
  2875.  
  2876.           ■ Return  None
  2877.  
  2878.           ■ Example See the {winwrite} examples
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.           EasyVision 1.0           User's Guide                     Page 50
  2895.  
  2896.  
  2897.  
  2898.  
  2899.           TWINDOW::WINTEXT
  2900.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2901.  
  2902.           ■ Summary Displays  a  text  array in  current  window  with word
  2903.                     wrapping and 'PgDown/Esc' prompts.
  2904.  
  2905.           ■ Syntax  #include "twindow.hpp"
  2906.                     void  wintext (char huge *textptr [,int fore, int high,
  2907.                     int helpflag]) ;
  2908.  
  2909.           ■ Remarks The window must be opened to call this function.
  2910.  
  2911.                     <textptr>:This  points  to  the text  to  be displayed.
  2912.                               This  text can be of  any length.  The format
  2913.                               of  this  text is  explained in  the {getkey}
  2914.                               function.
  2915.  
  2916.                               A  'PgDown' prompt  will be  created to allow
  2917.                               the  user  to see  the  remaining text  if it
  2918.                               couldn't all fit in the window.
  2919.  
  2920.                               An  'Esc' prompt will be created to allow the
  2921.                               user to stop viewing text at his convenience.
  2922.  
  2923.                          -->  When  you  use this  function, make  sure the
  2924.                               window is totally empty.  Everything that was
  2925.                               in  the window  is erased when  you call this
  2926.                               function.
  2927.  
  2928.                     <fore>  : Foreground  color  used.    This  argument is
  2929.                               optional.   If it is not given, or if you use
  2930.                               the  macro  'WSAME',  the  default foreground
  2931.                               color of the window will be used.
  2932.  
  2933.                     <high>  : Highlight  color  used.    This  argument  is
  2934.                               optional.    If it  is  not given,  the color
  2935.                               YELLOW will be used for highlights.
  2936.  
  2937.                     <helpflag>:  Determines  if  the F1  help  key  will be
  2938.                               available  when  the  text is  displayed.   0
  2939.                               means  NO,  1 means  YES.   This  argument is
  2940.                               optional  and default to 1.  You should never
  2941.                               have  to set this to  0.  It's internaly used
  2942.                               to prevent the F1 help routine to call itself
  2943.                               from help.
  2944.  
  2945.           ■ Return  None
  2946.  
  2947.           ■ Example window->wintext (instructions) ;
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.           EasyVision 1.0           User's Guide                     Page 51
  2954.  
  2955.  
  2956.  
  2957.  
  2958.           TWINDOW::WINTEXTFILE
  2959.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  2960.  
  2961.           ■ Summary Displays  a text file from  disk in current window with
  2962.                     word wrapping and 'PgDown/Esc' prompts.
  2963.  
  2964.           ■ Syntax  #include "twindow.hpp"
  2965.                     void  wintextfile  (char  huge  *path  [,int  fore, int
  2966.                     high]) ;
  2967.  
  2968.           ■ Remarks This  function acts exactly the same as {wintext}.  The
  2969.                     only  difference is that it gets it's input text from a
  2970.                     disk file.
  2971.  
  2972.                     <path>  : Complete  path  to disk  file.   If  the file
  2973.                               cannot   be  found,   'File  not   found'  is
  2974.                               displayed instead.
  2975.  
  2976.                     <fore>  : Foreground  color  used.    This  argument is
  2977.                               optional.   If it is not given, or if you use
  2978.                               the  macro  'WSAME',  the  default foreground
  2979.                               color of the window will be used.
  2980.  
  2981.                     <high>  : Highlight  color  used.    This  argument  is
  2982.                               optional.    If it  is  not given,  the color
  2983.                               YELLOW will be used for highlights.
  2984.  
  2985.                          -->  The <helpflag> argument is not used.  Help is
  2986.                               always available.
  2987.  
  2988.           ■ Return  None
  2989.  
  2990.           ■ Example window->wintextfile ("C:\\autoexec.bat") ;
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.           EasyVision 1.0           User's Guide                     Page 52
  3013.  
  3014.  
  3015.  
  3016.  
  3017.           TWINDOW::WINMOVE
  3018.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3019.  
  3020.           ■ Summary Moves the windows to a new location.
  3021.  
  3022.           ■ Syntax  #include "twindow.hpp"
  3023.                     void winmove (int row, int col) ;
  3024.  
  3025.           ■ Remarks The  window must  be opened.   <row> and  <col> are the
  3026.                     topleft corner of the window.  The first and last lines
  3027.                     of  the  desktop  are  reserved  for  the  menubar  and
  3028.                     statusline  and you can't  have part of  the window off
  3029.                     the screen.  Therefore, this function will validate all
  3030.                     coordinates  and  change them  to  get a  valide window
  3031.                     position.
  3032.  
  3033.           ■ Return  None
  3034.  
  3035.           ■ Example window->winmove (10,12) ;
  3036.  
  3037.  
  3038.           TWINDOW::WINSCROLL
  3039.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3040.  
  3041.           ■ Summary Moves window in 1 of 4 direction.
  3042.  
  3043.           ■ Syntax  #include "twindow.hpp"
  3044.                     void winscroll (char direction) ;
  3045.  
  3046.           ■ Remarks The  entire  window  will  be  moved,  if  possible,  1
  3047.                     character  in the requested direction.  The name can be
  3048.                     a  little confusing.  It is not the window content that
  3049.                     is scrolled.  It's the entire window.
  3050.  
  3051.                     The argument is a character, case insensitive:
  3052.  
  3053.                     U: Up,  D: Down,  L: Left,  R: Right.
  3054.  
  3055.           ■ Return  None
  3056.  
  3057.           ■ Example window->winscroll ('U') ;      // Move window up 1 line
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.           EasyVision 1.0           User's Guide                     Page 53
  3072.  
  3073.  
  3074.  
  3075.  
  3076.           TWINDOW::WININPUT
  3077.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3078.  
  3079.           ■ Summary Allow  inputs to be made  in multiple input fields, and
  3080.                     push buttons selection.
  3081.  
  3082.           ■ Syntax  #include "twindow.hpp"
  3083.                     int wininput () ;
  3084.  
  3085.           ■ Remarks You  must have created at least  1 input field prior to
  3086.                     calling this function.
  3087.  
  3088.                     The  user will be able to move between input fields and
  3089.                     buttons with TAB and SHIFT-TAB.
  3090.  
  3091.           ■ Return  If no push buttons were created, {wininput} will return
  3092.                     with  13 or 27.  13 means the user confirmed the inputs
  3093.                     by pressing ENTER.  27 means the user aborted the input
  3094.                     by pressing ESC.
  3095.  
  3096.                     If  buttons were  created, {wininput}  will return with
  3097.                     the identification value of the button pushed.
  3098.  
  3099.           ■ Example userinput = window->wininput () ;
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.  
  3111.  
  3112.  
  3113.  
  3114.  
  3115.  
  3116.  
  3117.  
  3118.  
  3119.  
  3120.  
  3121.  
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.           EasyVision 1.0           User's Guide                     Page 54
  3131.  
  3132.  
  3133.  
  3134.  
  3135.           TWINDOW::FIELDSETLENGTHS
  3136.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3137.  
  3138.           ■ Summary Sets  the length of the next  input field to be created
  3139.                     and the length of its answer buffer.
  3140.  
  3141.           ■ Syntax  #include "twindow.hpp"
  3142.                     void fieldsetlengths (int answer, int field) ;
  3143.  
  3144.           ■ Remarks <answer>: The  maximum length of the input buffer.  The
  3145.                               user  is allow  to enter  a string  no longer
  3146.                               than  this limit.   The  upper limit  is 32K.
  3147.                               That should be enough !
  3148.  
  3149.                     <field> : The  length of the input  field in the window
  3150.                               in  characters.   The  input field  cannot be
  3151.                               wider  than  the  window.    The  input field
  3152.                               cannot   be  wider  than  the  answer  buffer
  3153.                               length.
  3154.  
  3155.           ■ Return  None
  3156.  
  3157.           ■ Example window->fieldsetlengths (40,20) ;
  3158.  
  3159.  
  3160.           TWINDOW::FIELDSETCOLORS
  3161.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3162.  
  3163.           ■ Summary Sets  the colors  used in  the next  input field  to be
  3164.                     created.
  3165.  
  3166.           ■ Syntax  #include "twindow.hpp"
  3167.                     void   fieldsetcolors  ([int  back,   int  foreon,  int
  3168.                     foreoff]) ;
  3169.  
  3170.           ■ Remarks <back>  : Background  color  used.    This  argument is
  3171.                               optional.    If it  is not  given, or  if the
  3172.                               macro 'WSAME' is used, it will default to the
  3173.                               window default background color.
  3174.  
  3175.                     <foreon>: Foreground  color  used  when  the  field  is
  3176.                               active.  This argument is optional.  If it is
  3177.                               not given, it will default to WHITE.
  3178.  
  3179.                     <foreoff>:Foreground  color  used  when  the  field  is
  3180.                               inactive.   This argument is optional.  If it
  3181.                               is not given, it will default to DARKGRAY.
  3182.  
  3183.           ■ Return  None
  3184.  
  3185.           ■ Example window->fieldsetcolors (GREEN,WHITE,WHITE) ;
  3186.  
  3187.  
  3188.  
  3189.           EasyVision 1.0           User's Guide                     Page 55
  3190.  
  3191.  
  3192.  
  3193.  
  3194.           TWINDOW::FIELDSETFTR
  3195.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3196.  
  3197.           ■ Summary Sets the filter for the next input field to be created.
  3198.  
  3199.           ■ Syntax  #include "twindow.hpp"
  3200.                     void fieldsetftr (int ftrtype [,char huge *extra]) ;
  3201.  
  3202.           ■ Remarks An  input field  will allow only  certain characters as
  3203.                     input.   <ftrtype>  will determine  what characters are
  3204.                     accepted.
  3205.  
  3206.                     0: All characters are allowed, except control chars.
  3207.                     1: A-Z and a-z only.  *** Space (32) not allowed ***
  3208.                     2: 0-9 only.
  3209.                     3: A-Z, a-z and 0-9 only.
  3210.                     4: No characters allowed.
  3211.  
  3212.                     <extra> : Include,  between  quotes,  other  characters
  3213.                               that  you want accepted by the filter.  Often
  3214.                               used to include the space char (ASCII 32).
  3215.  
  3216.           ■ Return  None
  3217.  
  3218.           ■ Example window->fieldsetftr (3,"\:_") ;   // Enough for a path
  3219.  
  3220.  
  3221.           TWINDOW::FIELDSETATTRIB
  3222.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3223.  
  3224.           ■ Summary Sets attributes for the next input field to be created.
  3225.  
  3226.           ■ Syntax  #include "twindow.hpp"
  3227.                     void   fieldsetattrib  ([int  caps,  int  restore,  int
  3228.                     empty]) ;
  3229.  
  3230.           ■ Remarks <caps>  : If  set to 1, all inputs will be converted to
  3231.                               CAPS.    This argument  is optional  and will
  3232.                               default to 0.
  3233.  
  3234.                     <restore>:If  set to 1, what was  under a field will be
  3235.                               restored  when the  field is  inactive.  This
  3236.                               argument is optional and will default to 0.
  3237.  
  3238.                     <empty> : If  set to  0, the  user won't  be allowed to
  3239.                               input  an  empty  string.   This  argument is
  3240.                               optional and will default to 1.
  3241.  
  3242.           ■ Return  None
  3243.  
  3244.           ■ Example window->fieldsetattrib (1) ;          // Switch to CAPS
  3245.  
  3246.  
  3247.  
  3248.           EasyVision 1.0           User's Guide                     Page 56
  3249.  
  3250.  
  3251.  
  3252.  
  3253.           TWINDOW::FIELDCREATE
  3254.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3255.  
  3256.           ■ Summary Create a new input field in the window.
  3257.  
  3258.           ■ Syntax  #include "twindow.hpp"
  3259.                     void   fieldcreate  (int  row,   int  col  [,char  huge
  3260.                     *defaultasw, char huge *sltext]) ;
  3261.  
  3262.           ■ Remarks The  window  must  be  opened  prior  to  calling  this
  3263.                     function.
  3264.  
  3265.                     Fields have default built in behaviors when a window is
  3266.                     first  created.  If you don't  call any function to set
  3267.                     their   attributes,   buttons  will   default   to  the
  3268.                     following:
  3269.  
  3270.                     The field and the answer buffer will have a length of 1
  3271.                     character.
  3272.  
  3273.                     The field will be WHITE on BLUE.
  3274.  
  3275.                     The default filter will be 1, with no extra characters.
  3276.  
  3277.                     CAPS  LOCK  will not  be activated,  what is  under the
  3278.                     field won't be restored when the field is inactive, and
  3279.                     the user will be permitted to enter an empty string.
  3280.  
  3281.                     <row>   : Row of input field.
  3282.  
  3283.                     <col>   : Column  of input field.   <row> and <col> are
  3284.                               validated  to make sure  the input field fits
  3285.                               into   the  window.     If  the  position  is
  3286.                               incorrect, it will be automatically changed.
  3287.  
  3288.                     <defaultasw>:  This is the default  answer that will be
  3289.                               put  in the  input field.   This  argument is
  3290.                               optional.  If it is not given, the field will
  3291.                               be initialy empty.
  3292.  
  3293.                     <sltext>: This  is  a  short  help  text  that  will be
  3294.                               displayed  on the status  line when the field
  3295.                               is  active.  This arguement  is optional.  If
  3296.                               it  is  not  given,  no  help  text  will  be
  3297.                               displayed.    {winsetslptr}  must  have  been
  3298.                               called.
  3299.  
  3300.           ■ Return  None
  3301.  
  3302.           ■ Example window->fieldcreate (2,2,"Canada","Enter country") ;
  3303.  
  3304.  
  3305.  
  3306.  
  3307.           EasyVision 1.0           User's Guide                     Page 57
  3308.  
  3309.  
  3310.  
  3311.  
  3312.           TWINDOW::FIELDINPUT
  3313.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3314.  
  3315.           ■ Summary Get user input from one input field.
  3316.  
  3317.           ■ Syntax  #include "twindow.hpp"
  3318.                     int fieldinput ([int fieldnb]) ;
  3319.  
  3320.           ■ Remarks You  must have  created at least  1 input  field to use
  3321.                     this  function.  Fields are given numbers when they are
  3322.                     created.  The first field created is number 1.
  3323.  
  3324.                     <fieldnb>:This  is the  field from which  you will make
  3325.                               the  input.   This  field  must exist.   This
  3326.                               argument is optional.  If it is not given, it
  3327.                               will default to 1.
  3328.  
  3329.                     If you want to take inputs from many fields, you should
  3330.                     consider using the {wininput} function instead.
  3331.  
  3332.           ■ Return  {fieldinput}   with   return   with   an   ASCII   code
  3333.                     representing  how the user terminated  the input.  This
  3334.                     can be CR, ESC, TAB or SHIFT-TAB.
  3335.  
  3336.           ■ Example window->fieldinput (f) ;
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.           EasyVision 1.0           User's Guide                     Page 58
  3367.  
  3368.  
  3369.  
  3370.  
  3371.           TWINDOW::FIELDSETASW
  3372.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3373.  
  3374.           ■ Summary Sets a field current content.
  3375.  
  3376.           ■ Syntax  #include "twindow.hpp"
  3377.                     void fieldsetasw (char huge *answer [,int fieldnb]) ;
  3378.  
  3379.           ■ Remarks Even  if the content is  immediately changed, the field
  3380.                     on   the  screen  will  be  updated  only  when  it  is
  3381.                     activated.
  3382.  
  3383.                     <answer>: String  to copy to  the field.   It can be of
  3384.                               any  length, but  only what  will fit  in the
  3385.                               answer buffer will be copied.
  3386.  
  3387.                     <fieldnb>:Number  of  the  field  to  copy  to.    This
  3388.                               argument is optional and will default to 1.
  3389.  
  3390.           ■ Return  None
  3391.  
  3392.           ■ Example window->fieldsetasw ("C:\\UTILS\\",5) ;
  3393.  
  3394.  
  3395.           TWINDOW::FIELDGETASW
  3396.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3397.  
  3398.           ■ Summary Reads  the  content of  the answer  buffer of  an input
  3399.                     field.
  3400.  
  3401.           ■ Syntax  #include "twindow.hpp"
  3402.                     void fieldgetasw (char huge *dest [,int fieldnb]) ;
  3403.  
  3404.           ■ Remarks The  answer  buffer  of field  <fieldnb>  is  copied to
  3405.                     <dest>.  <fieldnb> is optional and will default to 1.
  3406.  
  3407.                -->  There  is  no  way for  the  function to  know  if your
  3408.                     destination  is big enough  to hold the  content of the
  3409.                     answer buffer.  YOU MUST MAKE ABSOLUTELY SURE THAT YOUR
  3410.                     DESTINATION IS AS BIG AS THE ANSWER BUFFER.
  3411.  
  3412.           ■ Return  None
  3413.  
  3414.           ■ Example window->fieldgetasw (response,nb) ;
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.           EasyVision 1.0           User's Guide                     Page 59
  3426.  
  3427.  
  3428.  
  3429.  
  3430.           TWINDOW::BUTTONSETCOLORS
  3431.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3432.  
  3433.           ■ Summary Sets the colors used for all the window's buttons.
  3434.  
  3435.           ■ Syntax  #include "twindow.hpp"
  3436.                     void   buttonsetcolors  ([int  back,  int  foreon,  int
  3437.                     foreoff, int high]) ;
  3438.  
  3439.           ■ Remarks All  buttons  use the  same  color configuration.   You
  3440.                     can't use this function once a button has been created.
  3441.  
  3442.                     <back>  : Background   color  of  all  buttons.    This
  3443.                               argument  is  optional  and  will  default to
  3444.                               GREEN.
  3445.  
  3446.                     <foreon>: Foreground  color  of active  buttons.   This
  3447.                               argument  is  optional  and  will  default to
  3448.                               WHITE.
  3449.  
  3450.                     <foreoff>:Foreground  color of inactive  buttons.  This
  3451.                               argument  is  optional  and  will  default to
  3452.                               BLACK.
  3453.  
  3454.                     <high>  : Highlight   color  of  all   buttons.    This
  3455.                               argument  is  optional  and  will  default to
  3456.                               YELLOW.
  3457.  
  3458.           ■ Return  None
  3459.  
  3460.           ■ Example window->buttonsetcolors     (BLUE,WHITE,BLACK,RED)    ;
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.           EasyVision 1.0           User's Guide                     Page 60
  3485.  
  3486.  
  3487.  
  3488.  
  3489.           TWINDOW::BUTTONCREATE
  3490.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3491.  
  3492.           ■ Summary Creates a new button.
  3493.  
  3494.           ■ Syntax  #include "twindow.hpp"
  3495.                     void  buttoncreate (int row, int  col, char huge *name,
  3496.                     int buttonkey [,char huge *sltext]) ;
  3497.  
  3498.           ■ Remarks The  window must be  opened to use  this function.  The
  3499.                     window  must be big enough to hold the button.  It must
  3500.                     be at least 4 lines high, and 11 columns wide.
  3501.  
  3502.                     You  can create as many buttons  as you want.  There is
  3503.                     no upper limit.
  3504.  
  3505.                     Button  have default built  in values when  a window is
  3506.                     first   created.     You   don't   need  to   call  the
  3507.                     {buttonsetcolors} function.  If you don't, buttons will
  3508.                     default  to a GREEN background, WHITE text when active,
  3509.                     BLACK  text when  inactive, and YELLOW  highlight.  The
  3510.                     availability  status of  a newly  created button always
  3511.                     defaults to 1 (available).
  3512.  
  3513.                     The first button created will be considered the default
  3514.                     button.  This button will be activated when you request
  3515.                     a {buttoninput}.
  3516.  
  3517.                     <row>   : Row position of the new button.
  3518.  
  3519.                     <col>   : Column  position of the new button.  If <row>
  3520.                               and  <col>  are  not  valide,  they  will  be
  3521.                               changed to a correct position.
  3522.  
  3523.                          -->  You  must make sure buttons don't overlap.  A
  3524.                               button  needs an empty line  under and to the
  3525.                               right of itself.
  3526.  
  3527.                     <name>  : The  name to put on the button.  It can be of
  3528.                               any  length, but only  the first 8 characters
  3529.                               will    be   considered.       Names   aren't
  3530.                               automatically   centered   on   the  buttons.
  3531.                               Center  the name manually by inserting spaces
  3532.                               in the name.
  3533.  
  3534.                     <buttonkey>:  This is the ASCII code that will identify
  3535.                               a  particular button.   Some rules  are to be
  3536.                               observed:
  3537.  
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543.           EasyVision 1.0           User's Guide                     Page 61
  3544.  
  3545.  
  3546.  
  3547.  
  3548.  
  3549.                               If  the  identification  code  of  the button
  3550.                               matches   a  character  in   its  name,  that
  3551.                               character will be highlighted.
  3552.  
  3553.                               TAB/SHIFT-TAB  and arrow keys codes cannot be
  3554.                               used to identify a button. (9, 271, 328, 336,
  3555.                               331, 333)
  3556.  
  3557.                     <sltext>: This  is  a  short  help  text  that  will be
  3558.                               displayed  on the status line when the button
  3559.                               is  active.  This arguement  is optional.  If
  3560.                               it  is  not  given,  no  help  text  will  be
  3561.                               displayed.    {winsetslptr}  must  have  been
  3562.                               called.
  3563.  
  3564.           ■ Return  None
  3565.  
  3566.           ■ Example window->buttoncreate (10,2,"  Save",'S',"Save file") ;
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.  
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.           EasyVision 1.0           User's Guide                     Page 62
  3603.  
  3604.  
  3605.  
  3606.  
  3607.           TWINDOW::BUTTONPUSH
  3608.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3609.  
  3610.           ■ Summary Push a button.
  3611.  
  3612.           ■ Syntax  #include "twindow.hpp"
  3613.                     void buttonpush (int buttonkey) ;
  3614.  
  3615.           ■ Remarks <buttonkey>    is   the   identification   code   (case
  3616.                     insensitive)  of the button  you want to  push.  If the
  3617.                     button  doesn't  exist,  the  function  has  no effect.
  3618.                     Otherwise, the button is pushed in a 3D fashion.
  3619.  
  3620.           ■ Return  None
  3621.  
  3622.           ■ Example window->buttonpush ('S') ;
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649.  
  3650.  
  3651.  
  3652.  
  3653.  
  3654.  
  3655.  
  3656.  
  3657.  
  3658.  
  3659.  
  3660.  
  3661.           EasyVision 1.0           User's Guide                     Page 63
  3662.  
  3663.  
  3664.  
  3665.  
  3666.           TWINDOW::BUTTONINPUT
  3667.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3668.  
  3669.           ■ Summary Makes user go trough the buttons with TAB/SHIFT-TAB.
  3670.  
  3671.           ■ Syntax  #include "twindow.hpp"
  3672.                     int buttoninput ([int inchar, int first, int tabexit]);
  3673.  
  3674.           ■ Remarks You  must have created  at least 1  button to call this
  3675.                     function,  and  there  must  be  at  least  one  button
  3676.                     available.
  3677.  
  3678.                     <inchar>: The  initial user  input (ASCII  code).  This
  3679.                               could  come  from  some  previous processing.
  3680.                               For  instance, the result  of an input field.
  3681.                               This argument is optional and will default to
  3682.                               0.
  3683.  
  3684.                     <first> : Determines  which button  will first  be made
  3685.                               active  during the input.   1 means the first
  3686.                               created  button,  0  means  the  last.   This
  3687.                               argument is optional and will default to 1.
  3688.  
  3689.                     <tabexit>:0  means the user can't  get out of the input
  3690.                               by  going past the first  or last button with
  3691.                               TAB  or SHIFT-TAB.  Instead the active button
  3692.                               will  wrap around.   1 means it  can get out.
  3693.                               This argument is optional and will default to
  3694.                               0.
  3695.  
  3696.           ■ Return  The  function returns an int.  It is the identification
  3697.                     code  of the button  that was pushed.   If the function
  3698.                     was permitted to exit (<tabexit> = 1), then it can also
  3699.                     return  the TAB or  SHIFT-TAB code.   TAB (9) means the
  3700.                     user got past the last button, SHIFT-TAB (271) means he
  3701.                     got past the first button.
  3702.  
  3703.           ■ Example inchar = window->buttoninput () ; // Can't return until
  3704.                                                       // button is pressed
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.           EasyVision 1.0           User's Guide                     Page 64
  3721.  
  3722.  
  3723.  
  3724.  
  3725.           TWINDOW::BUTTONSETAVAIL
  3726.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3727.  
  3728.           ■ Summary Sets the availability of a button.
  3729.  
  3730.           ■ Syntax  #include "twindow.hpp"
  3731.                     void buttonsetavail (int buttonkey, int state) ;
  3732.  
  3733.           ■ Remarks The button specified MUST exist.
  3734.  
  3735.                     <buttonkey>: The identification code of the button that
  3736.                               you want to change.
  3737.  
  3738.                     <state> : 1 means this button is available.  0 means it
  3739.                               is  not.    When  a  button  is  created with
  3740.                               {buttoncreate},  its  availability  status is
  3741.                               automatically set to 1.
  3742.  
  3743.           ■ Return  None
  3744.  
  3745.           ■ Example window->buttonsetavail ('S',0) ;     // Save button OFF
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.  
  3777.  
  3778.  
  3779.           EasyVision 1.0           User's Guide                     Page 65
  3780.  
  3781.  
  3782.  
  3783.  
  3784.           █████████████████████████████████████████████████████████████████
  3785.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3786.           C  H  A  P  T  E  R    9                EasyVision's demo program
  3787.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3788.  
  3789.           I  am  a  true  believer  in  'You  learn  faster  by  looking at
  3790.           examples'.   So, I have included  a demo program with EasyVision.
  3791.           This  demo  program is  included in  the  archive under  the name
  3792.           DEMO.CPP.  The compiled version is available under EVISION.EXE.
  3793.  
  3794.           I  have tried to use as many  functions as possible in this short
  3795.           source  code.  It  is fully commented  and illustrate the working
  3796.           relationship between all those functions and classes.
  3797.  
  3798.           I  really think  that 90%  of your  questions can  be answered by
  3799.           going  through this  demo program.   You are invited  to try some
  3800.           modifications of your own, and see the results.
  3801.  
  3802.           I'll  say  it  again...   You  should  really print  all  of this
  3803.           documentation  for easier  reading.  It's  always a  good idea to
  3804.           have the docs nearby when everything seems to go wrong.
  3805.  
  3806.  
  3807.           The Demo Program
  3808.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3809.  
  3810.           A  couple of  things are to  be remembered from  this demo source
  3811.           code:
  3812.  
  3813.           First,  you should always use HUGE POINTERS in your code.  You'll
  3814.           be on the safe side and avoid many problems.
  3815.  
  3816.           I  have used a  global variable for  the general help  text.  You
  3817.           should  put all texts  and prompts in  a separate ressource file.
  3818.           This  will make  it easy to  update prompts or  make an alternate
  3819.           language file.
  3820.  
  3821.           EasyVision  won't  prevent  you from  using  'printf' statements.
  3822.           However, you should work within the EasyVision boundaries and use
  3823.           the provided output functions.
  3824.  
  3825.           All  classes come with built in  default values.  Often, only one
  3826.           call is needed to use them if the defaults are to your taste.
  3827.  
  3828.           Looking at this demo program, you can see that you can make great
  3829.           looking  software  faster than  ever.   Take  the time  to become
  3830.           familiar  with EasyVision.  The rewards will be less frustrations
  3831.           and more enjoyment out of your programming.  Have fun !
  3832.  
  3833.           Remy Gendron
  3834.           author of EasyVision
  3835.  
  3836.  
  3837.  
  3838.           EasyVision 1.0           User's Guide                     Page 66
  3839.  
  3840.  
  3841.  
  3842.  
  3843.           █████████████████████████████████████████████████████████████████
  3844.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3845.           C  H  A  P  T  E  R    10                Things you should not do
  3846.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3847.  
  3848.           Here are a couple of things I have found to be hasardeous to your
  3849.           health.  I'd like to share them with you...
  3850.  
  3851.           Use this library without printing the manual.
  3852.           Use this library without looking at the example demo program.
  3853.           Use this library without registering !
  3854.           Use printf statements.
  3855.           Use scanf statements.
  3856.           Instantiate more than one {tmenubar} object.
  3857.           Smoke.
  3858.           Use 3000 {winswrite} statements.
  3859.           Use {wintextfile} on really big text files.  It's kindda slow.
  3860.           Using BC++ 3.0 on a slow computer.
  3861.           Using a function without reading its documentation twice.
  3862.           Make fun of your brother in law if he's a karate black belt.
  3863.  
  3864.           You  should begin to  get the idea...   Be careful,  that's all I
  3865.           ask...
  3866.  
  3867.  
  3868.  
  3869.  
  3870.  
  3871.  
  3872.  
  3873.  
  3874.  
  3875.  
  3876.  
  3877.  
  3878.  
  3879.  
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.           EasyVision 1.0           User's Guide                     Page 67
  3898.  
  3899.  
  3900.  
  3901.  
  3902.           █████████████████████████████████████████████████████████████████
  3903.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3904.           A  P  P  E  N  D  I  X     A                    Extended keycodes
  3905.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3906.  
  3907.           Extended  keycodes are returned when you press a key that doesn't
  3908.           have  an associated ASCII code.  They are represented by stuffing
  3909.           2  codes into the keyboard  buffer.  A 0  followed by an extended
  3910.           key keycode in the range 0 through 255.
  3911.  
  3912.           The  EasyVision  {getkey}  function  deals  with  these  codes by
  3913.           returning  values (int) in the range 0 through 511.  The standard
  3914.           ASCII  codes  are returned  unchanged  (Guess why  ?).   Extended
  3915.           keycodes  are added 256 to their  real value for convenience, and
  3916.           are returned as a single number.  Here they are...
  3917.  
  3918.           259       NUL
  3919.           271       Shift-TAB
  3920.           272-281   Alt Q/W/E/R/T/Y/U/I/O/P
  3921.           286-294   Alt A/S/D/F/G/H/J/K/L
  3922.           300-306   Alt Z/X/C/V/B/N/M
  3923.           315-324   F1 to F10
  3924.           327       Home
  3925.           328       Up arrow key
  3926.           329       Page Up
  3927.           331       Left arrow key
  3928.           333       Right arrow key
  3929.           335       End
  3930.           336       Down arrow key
  3931.           337       Page Down
  3932.           338       Ins
  3933.           339       Del
  3934.           340-349   Shift-F1 to Shift-F10
  3935.           350-359   Ctrl-F1 to Ctrl-F10
  3936.           360-369   Alt-F1 to Alt-F10
  3937.           370       Ctrl-Print Screen
  3938.           371       Ctrl-Left arrow key
  3939.           372       Ctrl-Right arrow key
  3940.           373       Ctrl-End
  3941.           374       Ctrl-Page Down
  3942.           375       Ctrl-Home
  3943.           376-387   Alt 1/2/3/4/5/6/7/8/9/0/-/=
  3944.           388       Ctrl-Page Up
  3945.           389       F11
  3946.           390       F12
  3947.           391       Shift-F11
  3948.           392       Shift-F12
  3949.           393       Ctrl-F11
  3950.           394       Ctrl-F12
  3951.           395       Alt-F11
  3952.           396       Alt-F12
  3953.  
  3954.  
  3955.  
  3956.           EasyVision 1.0           User's Guide                     Page 68
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962.           █████████████████████████████████████████████████████████████████
  3963.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  3964.           A  P  P  E  N  D  I  X     B   Color Codes and Symbolic constants
  3965.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  3966.  
  3967.           When  asked for  a color  argument, you  must provide  one of the
  3968.           following  values.  As  an alternative, you  can also use special
  3969.           MACROS, provided <conio.h> as been included.
  3970.  
  3971.  
  3972.  
  3973.           Available background colors:
  3974.  
  3975.                     0  BLACK
  3976.                     1  BLUE
  3977.                     2  GREEN
  3978.                     3  CYAN
  3979.                     4  RED
  3980.                     5  MAGENTA
  3981.                     6  BROWN
  3982.                     7  LIGHTGRAY
  3983.  
  3984.  
  3985.  
  3986.           Available foreground colors:
  3987.  
  3988.                     0  BLACK       8  DARKGRAY
  3989.                     1  BLUE        9  LIGHTBLUE
  3990.                     2  GREEN       10 LIGHTGREEN
  3991.                     3  CYAN        11 LIGHTCYAN
  3992.                     4  RED         12 LIGHTRED
  3993.                     5  MAGENTA     13 LIGHTMAGENTA
  3994.                     6  BROWN       14 YELLOW
  3995.                     7  LIGHTGRAY   15 WHITE
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.           EasyVision 1.0           User's Guide                     Page 69
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.           █████████████████████████████████████████████████████████████████
  4022.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  4023.           A  P  P  E  N  D  I  X     C                           Trademarks
  4024.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  4025.  
  4026.           Turbo vision from Borland
  4027.  
  4028.           DeskView from Quarterdeck
  4029.  
  4030.           EasyVision from TNG SOFT ENTERPRISES
  4031.  
  4032.           CXL from Mike Smedley
  4033.  
  4034.  
  4035.  
  4036.  
  4037.  
  4038.  
  4039.  
  4040.  
  4041.  
  4042.  
  4043.  
  4044.  
  4045.  
  4046.  
  4047.  
  4048.  
  4049.  
  4050.  
  4051.  
  4052.  
  4053.  
  4054.  
  4055.  
  4056.  
  4057.  
  4058.  
  4059.  
  4060.  
  4061.  
  4062.  
  4063.  
  4064.  
  4065.  
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072.  
  4073.  
  4074.           EasyVision 1.0           User's Guide                     Page 70
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.           █████████████████████████████████████████████████████████████████
  4081.           ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  4082.           A  P  P  E  N  D  I  X     D         Common Questions and Answers
  4083.           ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  4084.  
  4085.           As  this is the first release of  this software, I don't have any
  4086.           questions or answers.  Doesn't make for a big appendix D...
  4087.  
  4088.           I  will gladly answer any questions relating to this software.  I
  4089.           can  be reach via  the C++ FidoNet  echomail conference.  Address
  4090.           your message to 'Remy Gendron'.  Don't make a mistake in the name
  4091.           because  I don't read  the echo.   The name must  be correct if I
  4092.           want to be alerted to your message.
  4093.  
  4094.           I  will not send  answers through Netmail.   It costs something !
  4095.           But the real reason is that it won't benefit anyone else.
  4096.  
  4097.           Any comments, bug reports or suggestions will be appreciated.
  4098.  
  4099.  
  4100.  
  4101.  
  4102.                                 STARFLEET COMMAND BBS
  4103.                               (418)  525-6899/4740/6803
  4104.                                  FidoNet: 1:240/1701
  4105.  
  4106.  
  4107.  
  4108.                                          or
  4109.  
  4110.  
  4111.  
  4112.                                 TNG SOFT ENTERPRISES
  4113.                                   2480 Ave de Vitre
  4114.                                    Quebec, Quebec
  4115.                                        Canada
  4116.                                        G1J 4A6
  4117.  
  4118.  
  4119.  
  4120.           Thank you for using this software !
  4121.  
  4122.           Remy Gendron
  4123.           Author of EasyVision
  4124.  
  4125.  
  4126.  
  4127.  
  4128.  
  4129.  
  4130.  
  4131.